我想比较两个DateTime
Joda对象,以确定日期时间是否在同一天。
因此,我使用DateTimeComparator
配置为仅进行年度比较(因此无时间比较)。
但是下面的测试成功了,即使它失败了。为什么呢?
@Test
public void validateDayNotEqual() {
DateTimeComparator.getInstance(DateTimeFieldType.year(), DateTimeFieldType.dayOfWeek())
DateTime lastTimestamp = DateTime.now().minusDays(1);
assertTrue(comparator.compare(DateTime.now(), lastTimestamp) == 0);
}
答案 0 :(得分:4)
在DateTimeComparator
的javadoc中:
public static DateTimeComparator getInstance(DateTimeFieldType lowerLimit,
DateTimeFieldType upperLimit)
Returns a DateTimeComparator with a lower and upper limit. Fields of a magnitude less than the lower limit are excluded from comparisons. Fields of a magnitude greater than or equal to the upper limit are also excluded from comparisons. Either limit may be specified as null, which indicates an unbounded limit.
Parameters:
lowerLimit - inclusive lower limit for fields to be compared, null means no limit
upperLimit - exclusive upper limit for fields to be compared, null means no limit
Returns:
a comparator over all fields between the limits
正如您所看到的,真正的问题是您交换了两个参数lowerLimit
和upperLimit
。由于upperLimit
是独占的但可以省略,因此应将其更改为:
DateTimeComparator comparator = DateTimeComparator.getInstance(DateTimeFieldType.dayOfMonth());
...或者这也可以正常工作(也许更优雅):
DateTimeComparator comparator = getDateOnlyInstance();
编辑2 :答案中包含严重错误,随后进行了更正。