3 回答

TA貢獻1873條經(jīng)驗 獲得超9個贊
您應該使用 Java 8 Date & Time 庫,因為 Calendar 和 Date 已過時。
本LocalTime類應該是足夠了。
LocalTime open = LocalTime.of(6, 30);
LocalTime closed = LocalTime.of(17, 0);
LocalTime currentTime = LocalTime.now();
if (currentTime.isBefore(open) || currentTime.isAfter(closed)) {
// Closed
}
然后,您可以使用DateTimeFormatter該類將時間格式化為所需的格式。
如果您在確定商店的營業(yè)時間時還想考慮星期幾,那么您可以LocalDateTime結(jié)合上述示例使用:
LocalDateTime now = LocalDateTime.now();
// The opening days. Static import these from java.time.DayOfWeek
Set<DayOfWeek> daysOpen = new HashSet<>(Arrays.asList(
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY));
// Opening and closing times
LocalTime timeOpen = LocalTime.of(6, 30);
LocalTime timeClosed = LocalTime.of(17, 0);
if (!daysOpen.contains(now.getDayOfWeek()) || now.toLocalTime().isBefore(timeOpen) || now.toLocalTime().isAfter(timeClosed)) {
System.out.println("Closed");
}
else {
System.out.println("Open");
}

TA貢獻1802條經(jīng)驗 獲得超5個贊
我想不出一個非常簡潔的方法來做到這一點,但也許你可以使用這種方法
public boolean isOpen(Calendar c) {
int minute = c.get(Calendar.MINUTE);
int hour = c.get(Calendar.HOUR_OF_DAY);
return (hour < 17 && (hour > 6 || (hour == 6 && minute >=30)));
}
如果它在 6:30 和 17:00 之間,則應返回 true,而在任何其他時間則返回 false
(如果小時小于 17,并且(小時大于 6,或小時為 6 且分鐘為 30 或更高))
添加回答
舉報