我有两次String t1 = "17:00:00-07:00"
和String t2 = "23:59:00-07:00"
,即当地时间下午5点和当地时间晚上11:59(我的时区为PT)。
假设我在EST时区。如何知道当前时间是否与时区差异在t1和t2之间?
我尝试使用:
ISODateTimeFormat.timeNoMillis()
.parseDateTime(t1)
.withZone(DateTimeZone.UTC)
.toLocalTime()
.toDateTimeToday();
但是当我期待像 17:00:00-04:00
之类的东西时,它会给我 20:00:00-04:00
。
答案 0 :(得分:1)
假设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);
}