Java如何比较当前时间是否在两个时间范围内
我有两次Java如何比较当前时间是否在两个时间范围内,java,date,time,jodatime,Java,Date,Time,Jodatime,我有两次String t1=“17:00:00-07:00”和String t2=“23:59:00-07:00”,即当地时间下午5点和当地时间晚上11:59点(我的时区是PT) 假设我在东部时区。我如何知道当前时间是否在t1和t2范围内以及时区差 我尝试使用: ISODateTimeFormat.timeNoMillis() .parseDateTime(t1) .withZone(DateTimeZone.UTC) .toLocalTime()
String t1=“17:00:00-07:00”
和String t2=“23:59:00-07:00”
,即当地时间下午5点和当地时间晚上11:59点(我的时区是PT)
假设我在东部时区。我如何知道当前时间是否在t1和t2范围内以及时区差
我尝试使用:
ISODateTimeFormat.timeNoMillis()
.parseDateTime(t1)
.withZone(DateTimeZone.UTC)
.toLocalTime()
.toDateTimeToday();
但是它给了我
17:00:00-04:00
当我期待类似20:00:00-04:00
的东西时,假设ISODateTimeFormat.timeNoMillis()
始终是合适的解析器,您希望使用该类来实现这一点。另外,请使用而不是parseDateTime()
,然后使用和以确保时区得到正确处理
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);
}
withZone(DateTimeZone.UTC).toLocalTime()
为什么?这样我就可以用time@user3709877前几次我的回答不正确,但现在我肯定它是正确的。这个问题不重复,因为字符串和时区问题的正确性不容易或不直接