我有一些关于我试图用Joda-Time代表的开放时间的数据.
典型的开放时间如下:
开放时间为9至12,13至20.
我在Joda-Time实体中表示它们的主要原因是验证它们:
在API方面,Joda-Time Interval类具有进行此验证所需的方法,但Intervals是日期 - 时间 - 连续体中的一对时刻.我想代表他们独立于绝对时间,有点像两个LocalTime部分的间隔.这可能吗?
这是对自定义TimeInterval的尝试(非常类似于Gray评论的解决方案):
import org.joda.time.*;
public class TimeInterval {
private static final Instant CONSTANT = new Instant(0);
private final LocalTime from;
private final LocalTime to;
public TimeInterval(LocalTime from, LocalTime to) {
this.from = from;
this.to = to;
}
public boolean isValid() {
try { return toInterval() != null; }
catch (IllegalArgumentException e) { return false;}
}
public boolean overlapsWith(TimeInterval timeInterval) {
return this.toInterval().overlaps(timeInterval.toInterval());
}
/**
* @return this represented as a proper Interval
* @throws IllegalArgumentException if invalid (to is before from)
*/
private Interval toInterval() throws IllegalArgumentException {
return new Interval(from.toDateTime(CONSTANT), to.toDateTime(CONSTANT));
}
}
| 归档时间: |
|
| 查看次数: |
4520 次 |
| 最近记录: |