当前位置: 首页 > 知识库问答 >
问题:

Java 8日期等于空安全[duplicate]

井轶
2023-03-14

哪个是检查两个Date()对象是否相等的最佳方法,具有空安全功能?日期d1日期d2

d1 = null, d2 = new Date() => equal false
d1 = null, d2 = null => equal true
d1 = SAME_INSTANT, d2 = SAME_INSTANT => equal true
d1 = new Date(), d2 = YESTERDAY => equal false

共有3个答案

诸葛嘉熙
2023-03-14
Optional.ofNullable(d1).map(d -> d.equals(d2)).orElseGet(() -> d2 == null);

当其中一个为空时工作

贡建修
2023-03-14

从java-7开始,使用:

Objects::equals

如果可以的话,停止使用java.util.Date;当你想要Date时,使用Instant-更容易操作,更不容易出错。

游鸣
2023-03-14

使用Objects.equals(d1, d2)

如果参数彼此相等,则返回true,否则返回false。因此,如果两个参数都为null,则返回true;如果只有一个参数为null,则返回false。否则,等式是通过使用第一个参数的equals方法来确定的。

 类似资料:
  • 问题内容: 我正在用它来获取最新的物品。我如何才能做到这一点是null安全的,最后(最旧)的日期排序为null。createDt是一个joda LocalDate对象。 问题答案: 如果可能为,则使用@rgettman的解决方案。 如果可能为null,则使用以下代码: 在任何一种情况下,请注意,由于大多数标准实现会首先对整个流进行排序,因此效率可能很低。您应该改用Stream.min。

  • 问题内容: 我正在尝试运行一个mysql select语句,该语句会查看今天的日期,并且仅返回在当天注册的结果。我目前已经尝试了以下方法,但是它似乎不起作用。 谢谢大家,我已经修改了此声明。 问题答案:

  • 问题内容: 进行以下操作的最佳方法是什么: 注意:创建的是日期时间字段。 问题答案: 但是我想你是说

  • URL处的指南说我应该“在迁移包之前等待依赖项迁移”,但我现在想使用NNBD。 我怎么能那么做?

  • 问题内容: 我需要能够使用ord()获得与javascript的charCodeAt()函数相同的值。问题是ord()不支持UTF8。 如何在PHP中将Ą转换为260?我已经尝试了一些uniord函数,但是它们都报告了256个而不是260个。 非常感谢您的帮助! 问候 问题答案: 每字节工作一个字节(与大多数PHP标准字符串函数相同-如果不是全部)。您可能需要自己转换,例如借助多字节字符串扩展名:

  • 问题内容: 到目前为止,我还没有找到明确的答案。 我想使用PreparedStatement知道SQL类型DATETIME和Java类型的等效项。 我发现:http : //www.java2s.com/Code/Java/Database-SQL- JDBC/StandardSQLDataTypeswithTheirJavaEquivalents.htm 但是它指出SQL类型“ DATETIME