如何比较小时数?

我正在构建一个应用程序,我需要知道如何比较两个小时。


例如,我的商店早上 6:30 开门,下午 5:00 关门。


我需要TextView在 5 PM 后显示我的商店关门,并且在 6:30 AM 后我的商店营业,从周一到周五。


我怎样才能做到这一点?这是我的尝试:


public void timer() {

    Calendar c = Calendar.getInstance();

    int timeOfDay = c.get(Calendar.HOUR_OF_DAY);

    int open = 6:30; // 1 ERROR HERE WITH ":"

    int close = 17;


    if (timeOfDay < close) {

        hour.setText.("OPEN");

    }

}

但我收到多个错误。当我将 06:30 与 ":" 放在一起时,int open 中的一个;两个,周一至周五的限制。


谢谢您的帮助。


慕慕森
浏览 184回答 3
3回答

眼眸繁星

您应该使用 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)) {&nbsp; &nbsp; // Closed}然后,您可以使用DateTimeFormatter该类将时间格式化为所需的格式。如果您在确定商店的营业时间时还想考虑星期几,那么您可以LocalDateTime结合上述示例使用:LocalDateTime now = LocalDateTime.now();// The opening days. Static import these from java.time.DayOfWeekSet<DayOfWeek> daysOpen = new HashSet<>(Arrays.asList(&nbsp; &nbsp; MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY));// Opening and closing timesLocalTime timeOpen = LocalTime.of(6, 30);LocalTime timeClosed = LocalTime.of(17, 0);if (!daysOpen.contains(now.getDayOfWeek()) || now.toLocalTime().isBefore(timeOpen) || now.toLocalTime().isAfter(timeClosed)) {&nbsp; &nbsp; System.out.println("Closed");}else {&nbsp; &nbsp; System.out.println("Open");}

蓝山帝景

常量HOUR_OF_DAY是一个仅代表小时的整数。我建议使用该方法getTime()(请参阅此链接),然后使用返回的Date对象。

12345678_0001

我想不出一个非常简洁的方法来做到这一点,但也许你可以使用这种方法public boolean isOpen(Calendar c) {&nbsp; &nbsp;int minute = c.get(Calendar.MINUTE);&nbsp; &nbsp;int hour = c.get(Calendar.HOUR_OF_DAY);&nbsp; &nbsp;return (hour < 17 && (hour > 6 || (hour == 6 && minute >=30)));}如果它在 6:30 和 17:00 之间,则应返回 true,而在任何其他时间则返回 false(如果小时小于 17,并且(小时大于 6,或小时为 6 且分钟为 30 或更高))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java