我使用以下代码获取位置的时间和日期

        ZoneId zoneId = ZoneId.of("America/New_York");
        ZonedDateTime dateAndTimeForAccount = ZonedDateTime.ofInstant(now, zoneId);
        System.out.println(dateAndTimeForAccount);


如何检查dateAndTimeForAccount是否在6am到10am之间?

最佳答案

一种可能的解决方案是使用ValueRange

ZoneId zoneId = ZoneId.of("America/New_York");
ZonedDateTime dateAndTimeForAccount = ZonedDateTime.ofInstant(now, zoneId);
System.out.println(dateAndTimeForAccount);

ValueRange hourRange = ValueRange.of(8, 10);
System.out.printf("is hour (%s) in range [%s] -> %s%n",
        dateAndTimeForAccount.getHour(),
        hourRange,
        hourRange.isValidValue(dateAndTimeForAccount.getHour())
);


示例输出

2017-01-11T07:34:26.932-05:00[America/New_York]
is hour (7) in range [8 - 10] -> false

10-06 10:19