2016-12-26 45 views
0

我有我的應用程序在我RecyclerView結合時隙這種方法,但我想別的東西Android的時隙

private ArrayList<String> getTimeSet() { 
    ArrayList results = new ArrayList<String>(); 
    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a"); 
    for (int i = 0; i < 9; i++) { 
     Calendar calendar = new GregorianCalendar(); 
     calendar.add(Calendar.HOUR_OF_DAY, i); 
     String day = sdf.format(calendar.getTime()); 
     results.add(i, day); 
    } 
    return results; 
} 

enter image description here

這是代碼

上述各行的結果

但我想要這樣的一個變化,應用程序不會從當前的一個以前的時間,,,例如,如果是4點鐘,那麼時間點必須從4點開始,建議我球員 enter image description here

+0

問題是否解決? –

+0

no @k Neeraj Lal – neha

+0

你檢查了答案嗎? –

回答

0

我修改了你的方法。請檢查這個。 只需傳遞布爾值來檢查當天是否是當天。

private ArrayList<String> getTimeSet(boolean isCurrentDay) { 
    ArrayList results = new ArrayList<String>(); 
    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a"); 
    for (int i = 0; i < 9; i++) { 
     Calendar calendar = new GregorianCalendar(); 
     if(!isCurrentDay) 
      calendar.set(Calendar.HOUR_OF_DAY, 9); 
     calendar.add(Calendar.HOUR_OF_DAY, i); 
     calendar.set(Calendar.MINUTE, 0); 
     calendar.set(Calendar.SECOND, 0); 
     String day1 = sdf.format(calendar.getTime()); 
     calendar.add(Calendar.HOUR, 1); 
     String day2 = sdf.format(calendar.getTime()); 
     String day = day1 + " - " + day2; 
     results.add(i, day); 
    } 
    return results; 
} 

OR

您可以使用此方法來獲取第二天的時隙。但是,如果您將當前日期布爾值傳遞給上述方法,並檢查日期是否爲今天或下一天,那將會更好。

private ArrayList<String> getNextDayTimeSet() { 
    ArrayList results = new ArrayList<String>(); 
    SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a"); 
    for (int i = 0; i < 9; i++) { 
     Calendar calendar = new GregorianCalendar(); 
     calendar.set(Calendar.HOUR_OF_DAY, 9); //Added this line only 
     calendar.add(Calendar.HOUR_OF_DAY, i); 
     calendar.set(Calendar.MINUTE, 0); 
     calendar.set(Calendar.SECOND, 0); 
     String day1 = sdf.format(calendar.getTime()); 
     calendar.add(Calendar.HOUR, 1); 
     String day2 = sdf.format(calendar.getTime()); 
     String day = day1 + " - " + day2; 
     results.add(i, day); 
    } 
    return results; 
} 
+0

是的,它的工作原理,但僅對今天的日期,,,我想要的是,當我選擇今天的日期,它顯示當前時間旁邊的時間槽,但如果我選擇明天的日期,它必須顯示時間槽從開始,因爲在我截圖 – neha

+0

@neha我修改了答案。 – Shubham

+0

@shubham ,,,這個修改後的mthd從開始就綁定時間段,即上午9點,但是我選擇了今天的日期,它必須將它與當前時間綁定,我希望這兩個例子都能正常工作 – neha

0

我創建了一個生成時間段和日期槽的類。嘗試編碼,

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.util.ArrayList; 
import java.util.Calendar; 
import java.util.Date; 

/** 
* 
* @author Neeraj 
*/ 
public class DateSlotClass { 

    public static void main(String[] args) { 
     ArrayList<String> dateList = getDataSet(); 
     System.out.println(dateList); 
     for (String string : dateList) { 
      System.out.println(getTimeSet(string)); 
     } 
    } 

    /** 
    * Generates the time slots based on the date provided 
    * 
    * @param dateString the chosen date 
    * @return list of times 
    */ 
    private static ArrayList<String> getTimeSet(String dateString) { 
     ArrayList results = new ArrayList(); 
     try { 
      SimpleDateFormat inSdf = new SimpleDateFormat("EEE : dd-MMM"); 
      Date inDate = inSdf.parse(dateString); 
      Calendar cal = Calendar.getInstance(); 
      cal.setTime(inDate); 
      cal.set(Calendar.MINUTE, 0); 
      cal.set(Calendar.YEAR, Calendar.getInstance().get(Calendar.YEAR)); 
      cal.set(Calendar.HOUR, Calendar.getInstance().get(Calendar.HOUR) + 1); 

      if (!isTodaysDate(cal)) { 
       cal = Calendar.getInstance(); 
       cal.set(Calendar.HOUR, 9); 
       cal.set(Calendar.MINUTE, 0); 
      } 

      results = new ArrayList<>(); 
      SimpleDateFormat sdf = new SimpleDateFormat("hh:mm a"); 
      for (int i = 0; i < 9; i++) { 
       String time1 = sdf.format(cal.getTime()); 
       cal.add(Calendar.HOUR, 1); 
       String time2 = sdf.format(cal.getTime()); 
       String day = time1 + " - " + time2; 
       results.add(i, day); 
      } 
     } catch (ParseException ex) { 
      ex.printStackTrace(); 
     } 
     return results; 
    } 

    /** 
    * Test if the given date is today 
    * 
    * @param input the chosen date 
    * @return true if date is todays 
    */ 
    private static boolean isTodaysDate(Calendar input) { 
     SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); 

     String inString = sdf.format(input.getTime()); 

     Calendar today = Calendar.getInstance(); 
     String todayString = sdf.format(today.getTime()); 

     return inString.equals(todayString); 
    } 

    /** 
    * Generates the date slots based on the date provided 
    * 
    * @param dateString the chosen date 
    * @return list of dates 
    */ 
    private static ArrayList<String> getDataSet() { 
     ArrayList results = new ArrayList<String>(); 
     SimpleDateFormat sdf = new SimpleDateFormat("EEE : dd-MMM"); 
     Calendar calendar = Calendar.getInstance(); 
     for (int i = 0; i < 7; i++) { 
      String day = sdf.format(calendar.getTime()); 
      results.add(i, day); 
      calendar.add(Calendar.DATE, 1); 
     } 
     return results; 
    } 

}