【发布时间】:2021-10-31 08:19:42
【问题描述】:
我的当地时间有两个日期。
"2021-09-01 07:00:00 AM" 和 "2021-09-01 08:00:00 AM"(太平洋标准时间)
我正在尝试检查这两个日期是否介于另一个时区的 8 am 和 10 pm 之间。 (美国东部标准时间)
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd hh:mm:ss a");
ZonedDateTime startLocal = LocalDateTime.parse("2021-09-01 07:00:00 AM", formatter).atZone(ZoneId.systemDefault());
ZonedDateTime endLocal = LocalDateTime.parse("2021-09-01 08:00:00 AM", formatter).atZone(ZoneId.systemDefault());
ZonedDateTime startEst = startLocal.withZoneSameInstant(ZoneId.of("America/New_York"));
ZonedDateTime endEst = endLocal.withZoneSameInstant(ZoneId.of("America/New_York"));
System.out.println("Start Est: " + startEst.format(formatter)); //Start Est: 2021-09-01 10:00:00 AM
System.out.println("End Est: " + endEst.format(formatter)); //End Est: 2021-09-01 11:00:00 AM
我不知道如何比较起始时区startEst 和endEst 与两次8 am 和10 pm,而不使用date,而只使用时间。
我又添加了两个ZonedDateTimes 进行比较
ZonedDateTime buisnessStartHoursInEst8am = //Unsure of what to use here
ZonedDateTime buisnessEndHoursInEst10pm = //Unsure of what to use here
if(startEst.isBefore(buisnessStartHoursInEst8am)){
System.out.println("Business has not opened yet");
}
if(endEst.isAfter(buisnessEndHoursInEst10pm)){
System.out.println("Business has already closed");
}
【问题讨论】:
-
...在某种程度上,您只能可以比较时间和附加的日期 - 请记住在美国 DST 是一个事物,因此无论给定时间是否介于两者之间另一个时区的另外两个将取决于给定的日期。如果您尝试执行诸如显示本周的打开/关闭时间表之类的操作,您将创建给定日期的开始/结束时间,并使用列出的方法进行检查 - 这就是您想要的做什么?
标签: java zoneddatetime