我有一个对象,该对象具有开始日期时间和结束日期时间
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));
}
不过,这似乎有些矫kill过正。有没有更好的办法?我的意思是:
isBeforeOrEqual
的东西?找不到这样的方法o.getStart().isBeforeNow()
有什么区别吗?不确定是否相同,即UTC比较long
比较(getmillis
)是一种更明智的方法吗?答案 0 :(得分:1)
使用joda的Interval类表示[start;end)
时间间隔。然后检查此时间间隔是否包含指定的时刻。
Interval interval = new Interval(o.getStart(), o.getEnd());
interval.contains(DateTime.now(DateTimeZone.UTC))
或者您可以尝试使用interval.containsNow()
而不显式传递now
。
答案 1 :(得分:0)
有。
导入日期类java.util.Date
利用这些方法
date1.after(date2)–如果date1在date2之后,则返回true;否则返回true。否则为假。
date1.before(date2)–如果date1在date2之前,则返回true;否则返回true。否则为假。
date1.compareTo(date2)