我有两次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
。
假设ISODateTimeFormat.timeNoMillis()
它将始终是适当的解析器,则您想为此使用Interval
类。此外,使用parseLocalTime()
替代parseDateTime()
,然后将其转换为一个DateTime
以和使用.withOffsetParsed()
方法,确保了时区得到妥善处理。
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);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句