Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java如何比较当前时间是否在两个时间范围内_Java_Date_Time_Jodatime - Fatal编程技术网

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前几次我的回答不正确,但现在我肯定它是正确的。这个问题不重复,因为
字符串和时区问题的正确性不容易或不直接