这个问题在这里已有答案:
我有一个对象,其成员是开始日期时间和结束日期时间
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));
}
这看起来有点矫枉过正。有没有更好的办法?我的意思是:
isBeforeOrEqual
?找不到这样的方法o.getStart().isBeforeNow()
有什么不同吗?不确定是否相同,即UTC比较long
比较(getmillis
)是一种更为理智的方法?使用joda的Interval类来表示[start;end)
时间间隔。然后检查此时间间隔是否包含指定的时刻。
Interval interval = new Interval(o.getStart(), o.getEnd());
interval.contains(DateTime.now(DateTimeZone.UTC))
或者你可以尝试使用interval.containsNow()
而不明确地传递now
。
有。
import Date类java.util.Date
利用这些方法
date1.after(date2) - 返回true,date1在date2之后;别的假。
date1.before(date2) - 返回true,date1在date2之前;别的假。
date1.compareTo(date2)