Joda DateTime disregard/remove milis 比较相等

Joda DateTime disregard/remove milis in comparing for equality

是否有更简单的方法来删除 joda DateTime 的毫秒部分?

示例:2022-02-08T07:13:00.010Z -> 2022-02-08T07:13:00.000Z

我想比较两个日期时间..但忽略毫秒,因为我想比较的 date/time 有零毫秒。

我认为的一种方法是将日期格式化为字符串并解析它..但是因为这将是每分钟通过计划作业运行..如果有一个[=29=会更好] 的方法。

在比较 2 joda DateTime 时,是否有 easier/lighter 忽略毫秒的解决方案?

我就是这样做的,但我认为还有更好的解决方案 (easier/lighter):

    DateTime now = new DateTime();
    DateTime noMillis = new DateTime(
            now.getYear(),
            now.getMonthOfYear(),
            now.getDayOfMonth(),
            now.getHourOfDay(),
            now.getMinuteOfHour(),
            now.getSecondOfMinute());

除此之外,我认为还可以使用字符串格式化程序将 DateTime 转换为字符串并删除 millis.. 然后将其转换回 DateTime(从字符串)。

您可以使用 .withMillisOfSecond(0) - 从 DateTime 中删除毫秒。 此外,用于比较 DateTime 和忽略毫秒的其他选项也是可能的。

这里有一些例子:

DateTime t1 = DateTime.parse("2022-02-08T07:13:00.010Z");
DateTime t2 = DateTime.parse("2022-02-08T07:13:00.000Z");

// Option 1: set millis to 0
assertTrue(t1.withMillisOfSecond(0).equals(t2)); // Pass

// Option 2: remove millis from date
assertTrue(t1.minusMillis(t1.getMillisOfSecond()).equals(t2)); // Pass

// Option 3: compare that diff of millis less than 1000
// (If you want a check that t1 and t2 differentiate only in milliseconds)
assertTrue(t1.getMillis() - t2.getMillis() < 1000); // Pass