获取4小时前的日期
如何在Java中返回比当前系统时间少4小时的Date对象?
如果您已经在使用 Java 8 或更高版本:
LocalDateTime fourHoursAgo = LocalDateTime.now().minusHours(4);
或者,如果要考虑 DST(夏令时)(以防万一它在过去 4 小时内碰巧进入或退出 DST 的某个地方):
ZonedDateTime fourHoursAgo = ZonedDateTime.now().minusHours(4);
或者,如果您还没有使用 Java 8:
Date fourHoursAgo = new Date(System.currentTimeMillis() - (4 * 60 * 60 * 1000));
并且您希望将 DST 考虑在内:
Calendar calendar = Calendar.getInstance();
calendar.add(Calendar.HOUR_OF_DAY, -4);
Date fourHoursAgo = calendar.getTime();
其他答案是正确的,但我想贡献现代答案。现代解决方案使用 现代 Java 日期和时间 API。java.time
Instant fourHoursAgo = Instant.now().minus(Duration.ofHours(4));
System.out.println(fourHoursAgo);
这刚刚打印:
2018-01-31T15:22:21.113710Z
最后表示时间以 UTC 格式打印 — 如果您愿意,请以 UTC 偏移量为零。该类是 的现代替代品,因此我建议您坚持使用它。现代API通常更易于使用,更干净,设计得更好。Z
Instant
Date
请注意让库类为您进行 4 小时减法的优点:代码更易于阅读,并且不易出错。没有有趣的常量,也没有读者花时间检查它们是否正确。
如果您确实需要一个老式对象,例如,在使用无法更改或不想更改的旧版 API 时,请按如下方式进行转换:Date
Date oldfashionedDate = Date.from(fourHoursAgo);
链接:Oracle 教程跟踪:日期时间。当然,互联网上还有其他资源,请搜索。