我怎么比较小时?

Mat*_*att 0 java time android hour java.util.calendar

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

例如:我的商店开放06:30 am和关闭17:00 pm,我需要在Textview中显示17:00 pm我的商店关闭后,以及06:00 am我的商店开放后,从周一到周五.

我怎样才能做到这一点?

我收到多个错误:

一个在int打开的时候我把06:30用":"

两个星期一到星期五的限制

请在下面找到我的代码:

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");
        }}
Run Code Online (Sandbox Code Playgroud)

谢谢您的帮助.

MC *_*ror 8

您应该使用Java 8日期和时间库,因为日历和日期已过时.

这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
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用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");
}
Run Code Online (Sandbox Code Playgroud)

  • 对于API级别26之前的Android,您需要:https://github.com/JakeWharton/ThreeTenABP (4认同)