我正在使用jodatime (Java6)来检查间隔中的日期,我真的需要更高效地做这件事。有没有办法避免这种混乱:(所有变量都是org.joda.time.LocalDate类型)
if ((startReservation.isBefore(beginInterval) || startReservation.equals(beginInterval))
&& ((endReservation.isAfter(beginInterval) && (endReservation.isBefore(finishInterval) || endReservation.equals(finishInterval))))) {
startReservation= beginInterval;
//do stuff
}还有一堆其他的else if。
jodatime是否实现了beforeOrEqual()/afterOrEqual()方法或类似方法?
发布于 2016-03-16 21:54:10
假设您的变量是ReadableInstant类型的对象,则表达式
startReservation.isBefore(beginInterval) || startReservation.equals(beginInterval)
等同于更简单、更简短的表达式:
!startReservation.isAfter(beginInterval)
重要提示:如果您的实例(特别是)使用不同的时区,则使用equals()方法的DateTime可能是有害的。建议的解决方法更安全。
Joda-Time没有实现像beforeOrEqual()之类的方法,但是变通方法非常简单,Joda-Time团队没有考虑这个增强。,你终于可以这么做了:
if (
!startReservation.isAfter(beginInterval)
&& ((endReservation.isAfter(beginInterval)
&& (!endReservation.isAfter(finishInterval)
) {
startReservation= beginInterval;
//do stuff
}旁注:从数学上讲,这就像是艾伦区间关系"starts“、"finishedBy”、"overlaps“和"equals”(等价)的组合。
https://stackoverflow.com/questions/36033833
复制相似问题