Java如何比较当前时间是否在两个时间范围内

标签 java date time jodatime

我有两次 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/

相关文章:

date - 是否有一个函数可以将 Twitter API created_at 日期转换为 ColdFusion 8+ 的正确格式?

javascript - 使用 Javascript 格式化当前时间

java - JetS3t 填满了 my/tmp 目录。我该如何删除旧文件?

java - 如何使用Java中的YouTube API检查YouTube视频是否存在?

java - 为单个实体禁用 JPA Hibernate 模式验证

php - 在日期之前选择光盘 - SQL

java - HIbernate 标准别名未加入

javascript解析json日期时区不匹配导致日期显示错误

algorithm - 不同的方式 int n 可以分成 1 或 2 组

MySQL在没有足够结果时按时间限制查询