Java 8 - 如何获得 24 小时前的 java.sql.Timestamp?

Java 8 - How do I get a java.sql.Timestamp that is 24 hours ago?

如何获取代表 24 小时前的 java.sql.Timestamp?我正在通过 Scala 使用 JDK 8。

如果您使用的是 Java 1.8,则非常简单:

Instant instant = Instant.now().minus(24, ChronoUnit.HOURS);
Timestamp timestamp = Timestamp.from(instant);

您可以使用 now() 的重载来接受 Clock 以更加易于测试(因此您可以使用假时钟而不是系统时钟进行测试)。您可能还需要静态导入 ChronoUnit.HOURS 以提高可读性 - 即 Instant.now().minus(24, HOURS).

请注意,这恰好是过去的 24 小时 - 而不是 "the same local time, but yesterday"。