我有两次 String t1 = "17:00:00-07:00"
和 String t2 = "23:59:00-07:00"
,即本地时间下午 5 点和晚上 11:59(我的时区是太平洋时间)。
假设我在 EST 时区。如何知道当前时间是否在时区差异的 t1 和 t2 范围内?
我尝试使用:
ISODateTimeFormat.timeNoMillis()
.parseDateTime(t1)
.withZone(DateTimeZone.UTC)
.toLocalTime()
.toDateTimeToday();
但它给了我 17:00:00-04:00
当我期待像 20:00:00-04 这样的东西时: 00
。
最佳答案
假设 ISODateTimeFormat.timeNoMillis()
始终是合适的解析器,您想使用 Interval
为此上课。另外,使用 parseLocalTime()
而不是 parseDateTime()
然后是 convert it to a DateTime
和使用.withOffsetParsed()
method以确保正确处理时区。
public static boolean isNowBetweenRange(String t1, String t2) {
DateTime time1 = normalizeString(t1);
DateTime time2 = normalizeString(t2);
Interval interval = new Interval(time1, time2);
return interval.contains(DateTime.now());
}
private static final DateTimeFormatter FORMAT =
ISODateTimeFormat.timeNoMillis().withOffsetParsed();
private static DateTime normalizeString(String t1) {
DateTimeZone zone = FORMAT.parseDateTime(t1).getZone();
return FORMAT
.parseLocalTime(t1)
.toDateTimeToday(zone);
}
关于Java如何比较当前时间是否在两个时间范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26433107/