2017-09-04 109 views
-3

我試圖讓時間範圍從上午8:00到下午8:00和晚上8:00到上午8:00,我試圖讓時間表顯示它來自firebase的recyclerview。如何獲得時間範圍

這是我構建的代碼。

Calendar c = Calendar.getInstance(); 
    hour = c.get(Calendar.HOUR_OF_DAY); 
    min = c.get(Calendar.MINUTE); 
    sec = c.get(Calendar.SECOND); 
    int ds = c.get(Calendar.AM_PM); 
    if(ds==0) 
     AM_PM="am"; 
    else 
     AM_PM="pm"; 

    Toast.makeText(getActivity(), ""+hour+":"+min+AM_PM, Toast.LENGTH_SHORT).show(); 

    if (hour >= 8 && AM_PM.matches("am") || hour >= 12 && AM_PM.matches("pm") || hour <= 7 && min <=59 && sec <=59 && AM_PM.matches("pm")){ 
     fill_with_data_shift1(); 
    }else if (hour >= 20 && AM_PM.matches("pm") || hour >= 00 && AM_PM.matches("am")){ 
     fill_with_data_shift2(); 
    } 
+0

你得到的錯誤是什麼? –

+0

有些時候,這種交流不符合。 –

+0

即使它不在那裏,它也會顯示輪班。 –

回答

1

基本上你的代碼應該是:

// between 8am and 8pm (not included) 
if (hour >= 8 && hour < 20) { 
    // Do something 
} else { // the rest of the time 
    // Do something else 
} 

分,秒和所有其餘的並不重要。

2

使用現代的Java日期&時間API這是以很自然:

LocalTime currentTime = LocalTime.now(ZoneId.of("Asia/Manila")); 

    DateTimeFormatter dtf = DateTimeFormatter.ofPattern("h:mma", Locale.ENGLISH); 
    String displayTime = currentTime.format(dtf).toLowerCase(); 
    Toast.makeText(getActivity(), displayTime, Toast.LENGTH_SHORT).show(); 

    if (currentTime.isBefore(LocalTime.of(8, 0)) 
      || ! currentTime.isBefore(LocalTime.of(20, 0))) { // not-before means on or after 
     fill_with_data_shift2(); 
    } else { 
     fill_with_data_shift1(); 
    } 

由於獲得的本地時間是一個時間段操作靈敏,三思而後行,你傳遞給LocalTime.now()的時區。如果您想使用設備的時區設置,請通過ZoneId.systemDefault()

對於Android,您可以在ThreeTenABP獲取現代API,請參閱this question: How to use ThreeTenABP in Android Project