如果LocalDate dayX
属于以开始日LocalDate day0
和长度Period length
描述的持续时间,那么有效且易于阅读的测试表达是什么?
目前我这样做:
boolean match = !day0.isAfter(dayX) && day0.plus(length).isAfter(dayX);
我觉得这看起来有点愚蠢,每当我读到这篇文章时,我的大脑需要几秒钟来判断边界是否正确。所以我正在寻找一种更聪明的方式,可能涉及Duration
或Interval
类。
答案 0 :(得分:2)
您正在做的是正确的(除了您需要对第一个条件使用before
方法)。也许你可以将它包装成一个方法并调用它使其可重复使用并且看起来更优雅,例如:
public boolean isInRange(Localdate start, Period period, Localdate target){
return !target.before(start) && !target.after(start.plus(period));
}
答案 1 :(得分:1)
有点类似的方法:day0< dayx< (第0天+期间)
boolean match = (dayx.isAfter(day0) && dayx.isBefore(day0.plus(length));