3 回答

TA貢獻(xiàn)1873條經(jīng)驗(yàn) 獲得超9個(gè)贊
您應(yīng)該使用 Java 8 Date & Time 庫(kù),因?yàn)?Calendar 和 Date 已過(guò)時(shí)。
本LocalTime類應(yīng)該是足夠了。
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該類將時(shí)間格式化為所需的格式。
如果您在確定商店的營(yíng)業(yè)時(shí)間時(shí)還想考慮星期幾,那么您可以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貢獻(xiàn)1843條經(jīng)驗(yàn) 獲得超7個(gè)贊
常量HOUR_OF_DAY
是一個(gè)僅代表小時(shí)的整數(shù)。我建議使用該方法getTime()
(請(qǐng)參閱此鏈接),然后使用返回的Date
對(duì)象。

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
我想不出一個(gè)非常簡(jiǎn)潔的方法來(lái)做到這一點(diǎn),但也許你可以使用這種方法
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 之間,則應(yīng)返回 true,而在任何其他時(shí)間則返回 false
(如果小時(shí)小于 17,并且(小時(shí)大于 6,或小時(shí)為 6 且分鐘為 30 或更高))
添加回答
舉報(bào)