如何检查我们是否在2个日期时间对象之间? [重复]

问题描述 投票:0回答:2

这个问题在这里已有答案:

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

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)是一种更为理智的方法?
java jodatime utc
2个回答
1
投票

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

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

或者你可以尝试使用interval.containsNow()而不明确地传递now


0
投票

有。

import Date类java.util.Date

利用这些方法

date1.after(date2) - 返回true,date1在date2之后;别的假。

date1.before(date2) - 返回true,date1在date2之前;别的假。

date1.compareTo(date2)

© www.soinside.com 2019 - 2024. All rights reserved.