Java 8-ZonedDateTime不等于另一个ZonedDateTime

LG

我创建了两个ZonedDateTime对象,我认为它们应该相等:

public static void main(String[] args) {
    ZoneId zid = ZoneId.of("America/New_York");
    ZoneOffset offset = ZoneOffset.from(LocalDateTime.now().atZone(zid));
    ZonedDateTime zdt0 = ZonedDateTime.of(2014, 8, 24, 21, 10, 1, 777000002, offset);
    ZonedDateTime zdt1 = ZonedDateTime.of(2014, 8, 24, 21, 10, 1, 777000002, zid);
    boolean equals = Objects.equals(zdt0, zdt1);
    System.out.println("equals: " + equals);
}

在调试器中,我看到ZonedDateTime区域成员的类在第一种情况下是java.time.ZoneOffset,在第二种java.time.ZoneRegion中,这使ZonedDateTime对象不相等。这很令人困惑...有什么想法吗?

霍尔格

您正在检查对象相等性,其结果false是这些对象不相等。一个绑定到一个ZoneId,另一个绑定到一个ZoneOffset如果要检查它们是否表示相同的时间,可以使用不是很直观命名的method isEqual

例如:

ZoneId zid = ZoneId.of("America/New_York");
ZoneOffset offset = ZoneOffset.from(LocalDateTime.now().atZone(zid));
ZonedDateTime zdt0 = ZonedDateTime.of(2014, 8, 24, 21, 10, 1, 777000002, offset);
ZonedDateTime zdt1 = ZonedDateTime.of(2014, 8, 24, 21, 10, 1, 777000002, zid);
System.out.println("isEqual:" + zdt0.isEqual(zdt1));
System.out.println("equals: " + zdt0.equals(zdt1));

印刷:

isEqual:true
equals: false

顺便说一句,请注意,您不需要使用Objects.equals(a,b)已经知道不是的两个对象null您可以a.equals(b)直接调用

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么Java的8 ZonedDateTime认为24:01是一个有效时间字符串表示?

来自分类Dev

C 指针不等于另一个

来自分类Dev

Java 不等于 OR

来自分类Dev

Java 8 ZonedDateTime或OffsetDateTime替换Joda DateTime

来自分类Dev

使用Java 8流API将地图转换为另一个地图

来自分类Dev

Java 8 Lambda-通过另一个集合过滤集合

来自分类Dev

如何在Java 8中按另一个元素将List的元素分组

来自分类Dev

Java8-数组项存在于另一个数组中

来自分类Dev

用另一个所有数组元素过滤数组-Java 8

来自分类Dev

使用 Java 8 中的另一个列表过滤对象列表

来自分类Dev

使用 Java 8 Streams 从另一个不同类型的集合更新集合

来自分类Dev

Java8:使用流将一个地图转换为另一个地图

来自分类常见问题

使用Java 8流从另一个地图映射构建一个地图映射

来自分类Dev

如何在Java8中将一个流还原为另一个流?

来自分类Dev

一个整数不等于另一个整数吗?

来自分类Dev

Java:将一个ImageIcon设置为等于另一个

来自分类Dev

转换的java.sql.Timestamp到Java 8 ZonedDateTime?

来自分类Dev

错误:UIView的窗口不等于另一个视图的窗口

来自分类Dev

Java问题不等于

来自分类Dev

不等于符号(java)

来自分类Dev

Java 8惯用方式将Lambda应用于返回另一个列表的列表?

来自分类Dev

如何在Java 8中迭代对象数组列表并设置为另一个对象列表?

来自分类Dev

将映射器流应用于Java8中的另一个流

来自分类Dev

如何在Java 8中检查Stream <String>是否包含另一个Stream <String>

来自分类Dev

如何GROUPBY对象的属性和映射到使用Java 8流另一个对象?

来自分类Dev

基于用java从列表中另一个属性重复属性中删除元素8

来自分类Dev

从另一个列表中删除带有条件的嵌套列表中的元素-Java 8

来自分类Dev

另一个字符串转换URL utf8 java

来自分类Dev

如何在Java 8中检查Stream <String>是否包含另一个Stream <String>

Related 相关文章

  1. 1

    为什么Java的8 ZonedDateTime认为24:01是一个有效时间字符串表示?

  2. 2

    C 指针不等于另一个

  3. 3

    Java 不等于 OR

  4. 4

    Java 8 ZonedDateTime或OffsetDateTime替换Joda DateTime

  5. 5

    使用Java 8流API将地图转换为另一个地图

  6. 6

    Java 8 Lambda-通过另一个集合过滤集合

  7. 7

    如何在Java 8中按另一个元素将List的元素分组

  8. 8

    Java8-数组项存在于另一个数组中

  9. 9

    用另一个所有数组元素过滤数组-Java 8

  10. 10

    使用 Java 8 中的另一个列表过滤对象列表

  11. 11

    使用 Java 8 Streams 从另一个不同类型的集合更新集合

  12. 12

    Java8:使用流将一个地图转换为另一个地图

  13. 13

    使用Java 8流从另一个地图映射构建一个地图映射

  14. 14

    如何在Java8中将一个流还原为另一个流?

  15. 15

    一个整数不等于另一个整数吗?

  16. 16

    Java:将一个ImageIcon设置为等于另一个

  17. 17

    转换的java.sql.Timestamp到Java 8 ZonedDateTime?

  18. 18

    错误:UIView的窗口不等于另一个视图的窗口

  19. 19

    Java问题不等于

  20. 20

    不等于符号(java)

  21. 21

    Java 8惯用方式将Lambda应用于返回另一个列表的列表?

  22. 22

    如何在Java 8中迭代对象数组列表并设置为另一个对象列表?

  23. 23

    将映射器流应用于Java8中的另一个流

  24. 24

    如何在Java 8中检查Stream <String>是否包含另一个Stream <String>

  25. 25

    如何GROUPBY对象的属性和映射到使用Java 8流另一个对象?

  26. 26

    基于用java从列表中另一个属性重复属性中删除元素8

  27. 27

    从另一个列表中删除带有条件的嵌套列表中的元素-Java 8

  28. 28

    另一个字符串转换URL utf8 java

  29. 29

    如何在Java 8中检查Stream <String>是否包含另一个Stream <String>

热门标签

归档