java - 如何检查我们现在是否位于两个日期时间对象之间?

标签 java jodatime utc

我有一个对象,它的成员有开始日期时间和结束日期时间

class MyObject {  
   DateTime start;  
   DateTime end;  

   public MyObject(String isoUtcStart, String isoUtcEnd) {
      this.start = new DateTime(isoUtcStart);  
      this.end = new DateTime(isoUtcEnd);  
   }  
} 

我想要确定我们现在是否处于这些时刻的范围内。
我的做法如下:

public boolean isWithinCurrentTime(MyObject o) {  
     DateTime now = DateTime.now(DateTimeZone.UTC);
     return (o.getStart().isBefore(now) || o.getStart().isEqual(now))
                    && (o.getEnd().isAfter(now) || o.getEnd().isEqual(now));  
}  

但这似乎有点矫枉过正。有没有更好的办法?我的意思是:

  1. 有类似 isBeforeOrEqual 的东西吗? ?找不到这样的方法
  2. o.getStart().isBeforeNow()有什么区别吗? ?不确定这是否相同,即 UTC 比较
  3. 正在移至 long比较 ( getmillis ) 是一种更明智的方法吗?

最佳答案

使用joda的Interval类来表示[start;end)时间间隔。然后检查这个时间间隔是否包含指定的时刻。

Interval interval = new Interval(o.getStart(), o.getEnd());
interval.contains(DateTime.now(DateTimeZone.UTC))

或者您可以尝试使用 interval.containsNow() 而无需显式传递 now

关于java - 如何检查我们现在是否位于两个日期时间对象之间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55638329/

相关文章:

java - 在线 Java 线程转储分析器

java - java中最大和第二大的数从整数数组中获得相同的值?

java - Spring HibernateTemplate 在运行时添加映射

java - 给定一个 DateTime 对象,如何获取 Joda Time 中的 DateTimeZone?

java - 如何检查 ISO 日期字符串中是否存在偏移量

java - 跳过假期+ Joda时间计算结束日期

java - 查找上个月的第一个和最后一个日期

c# - UIDatePicker 日期 : 1 Hour Wrong 的时区问题

java - auth.net 中的 E00007 : User authentication failed due to invalid authentication values.

java - 在不使用弃用代码的情况下从 YMD HMS 值创建 Java 日期