比较java.time.ZoneDateTime的实例忽略java 8中比较的秒和毫秒实例

比较java.time.ZoneDateTime的实例忽略java 8中比较的秒和毫秒实例,java,java-8,java-time,Java,Java 8,Java Time,我在Java 8中寻找一种等效的Joda Time方法,比较org.Joda.Time.DateTime(指定了时区)的实例,忽略以下比较中的秒和毫秒 DateTimeFormatter formatter = DateTimeFormat.forPattern("dd-MMM-yyyy hh:mm:ss:SSS a Z").withZone(DateTimeZone.forID("Asia/Kolkata")); DateTime first = formatter.parseDateTime

我在Java 8中寻找一种等效的Joda Time方法,比较
org.Joda.Time.DateTime
(指定了时区)的实例,忽略以下比较中的秒和毫秒

DateTimeFormatter formatter = DateTimeFormat.forPattern("dd-MMM-yyyy hh:mm:ss:SSS a Z").withZone(DateTimeZone.forID("Asia/Kolkata"));
DateTime first = formatter.parseDateTime("16-Feb-2012 12:03:45:999 AM +05:30");
DateTime second = formatter.parseDateTime("16-Feb-2012 12:03:55:999 AM +05:30");

DateTimeComparator comparator = DateTimeComparator.getInstance(DateTimeFieldType.minuteOfHour());
int compare = comparator.compare(first, second);
System.out.println("compare : " + compare);
比较返回
0
,这意味着在忽略比较中的秒和毫秒瞬间后,两个对象被视为相等

这里忽略小于用
DateTimeFieldType
指定的下限的字段

在Java8中使用Java时间API做同样事情的等效方法是什么


老实说,我的尝试并没有在Java 8中实现同样的效果。

由于Java-8引入了lambdas和方法引用,因此没有必要使用专用的
比较器
类,因此它们在
Java.time
中不存在。你可以写:

Comparator<ZonedDateTime> comparator = Comparator.comparing(
      zdt -> zdt.truncatedTo(ChronoUnit.MINUTES));
Comparator Comparator=Comparator.comparating(
zdt->zdt.truncatedTo(ChronoUnit.MINUTES));
完整示例:

DateTimeFormatter formatter = DateTimeFormatter.ofPattern("dd-MMM-yyyy hh:mm:ss:SSS a X")
        .withLocale(Locale.ENGLISH).withZone(ZoneId.of("Asia/Kolkata"));
ZonedDateTime first = ZonedDateTime.parse("16-Feb-2012 12:03:45:999 AM +0530", formatter);
ZonedDateTime second = ZonedDateTime.parse("16-Feb-2012 12:03:55:999 AM +0530", formatter);
Comparator<ZonedDateTime> comparator = Comparator.comparing(
        zdt -> zdt.truncatedTo(ChronoUnit.MINUTES));
System.out.println(comparator.compare(first, second));
DateTimeFormatter formatter=DateTimeFormatter.of模式(“dd-MMM-yyyy-hh:mm:ss:SSS-a X”)
withLocale(Locale.ENGLISH)、withZone(ZoneId.of(“亚洲/加尔各答”));
ZonedDateTime first=ZonedDateTime.parse(“2012年2月16日12:03:45:999 AM+0530”,格式化程序);
ZonedDateTime秒=ZonedDateTime.parse(“2012年2月16日12:03:55:999 AM+0530”,格式化程序);
比较器比较器=比较器。比较(
zdt->zdt.truncatedTo(ChronoUnit.MINUTES));
System.out.println(comparator.compare(第一,第二));
尝试上课

long minutes = ChronoUnit.MINUTES.between(first, second);