3 回答
TA贡献1873条经验 获得超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该类将时间格式化为所需的格式。
如果您在确定商店的营业时间时还想考虑星期几,那么您可以LocalDateTime结合上述示例使用:
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条经验 获得超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 或更高))
添加回答
举报