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
是否有更简单的方法来删除 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