在java 8中比较没有纳秒的LocalDateTime

时间:2017-11-30 00:44:11

标签: java java-8

我想比较2个LocalDateTime对象而不考虑纳秒。这就是我目前正在做的事情。 有没有更好的方法呢?

LocalDateTime object1 = LocalDateTime.of(2014, 3, 30, 12, 30, 23, 12000);
LocalDateTime object2 = LocalDateTime.of(2014, 3, 30, 12, 30, 23, 12004);

System.out.println(object1.isEqual(object2)); // false

LocalDateTime  objec1tWithoutNano = object1.minusNanos(object1.getNano());
LocalDateTime  objec2tWithoutNano = object2.minusNanos(object2.getNano());

System.out.println(objec1tWithoutNano.isEqual(objec2tWithoutNano)); // true  

1 个答案:

答案 0 :(得分:10)

我建议您继续使用对您而言最具可读性的方法,因为LocalDateTime API中的大多数方法已经在每个方法调用上返回一个新实例,因此如果存在最小的性能缺陷,您可以通过不同的方式完成手头的任务。例如,truncateTo可以用于使用minusNanos返回与示例相同的结果:

System.out.println(object1.truncatedTo(ChronoUnit.SECONDS)
    .isEqual(object2.truncatedTo(ChronoUnit.SECONDS)));