我有一个对象,它的成员有开始日期时间和结束日期时间
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
。
关于java - 如何检查我们现在是否位于两个日期时间对象之间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55638329/