我试图将时间范围从早上8点到晚上8点以及晚上8点到早上8点,我试图让时间表显示在来自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 :(得分:2)
使用现代Java日期&amp;时间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。
答案 1 :(得分:1)
基本上你的代码应该是:
// between 8am and 8pm (not included)
if (hour >= 8 && hour < 20) {
// Do something
} else { // the rest of the time
// Do something else
}
分钟,秒和其他所有事情都不重要。