Java 类库有一个名为 DateTime 的类。 DateTime 有这个方法:
int daysBetween(DateTime other)
它返回此参数与参数之间的天数。它没有方法
int secondsBetween(DateTime other)
我恰好需要。是否有一个类类似于 DateTime 但有这样的方法?
原文由 snakile 发布,翻译遵循 CC BY-SA 4.0 许可协议
我想提供现代答案。当问到这个问题时,其他答案都很好,但时间在流逝。今天我推荐你使用 java.time
,现代 Java 日期和时间 API 。
ZonedDateTime aDateTime = ZonedDateTime.of(2017, 12, 8, 19, 25, 48, 991000000, ZoneId.of("Europe/Sarajevo"));
ZonedDateTime otherDateTime = ZonedDateTime.of(2017, 12, 8, 20, 10, 38, 238000000, ZoneId.of("Europe/Sarajevo"));
long diff = ChronoUnit.SECONDS.between(aDateTime, otherDateTime);
System.out.println("Difference: " + diff + " seconds");
这打印:
Difference: 2689 seconds
ChronoUnit.SECONDS.between()
works with two ZonedDateTime
objects or two OffsetDateTime
s, two LocalDateTime
s, etc.
如果你需要的不仅仅是秒,你应该考虑使用 Duration
类:
Duration dur = Duration.between(aDateTime, otherDateTime);
System.out.println("Duration: " + dur);
System.out.println("Difference: " + dur.getSeconds() + " seconds");
这打印:
Duration: PT44M49.247S
Difference: 2689 seconds
这两行中的前者以 ISO 8601 格式打印持续时间,输出表示持续时间为 44 分 49.247 秒。
其他几个答案中使用的 Date
类现在早已过时。 Joda-Time 也用于一对夫妇(并且可能在问题中)现在处于维护模式,没有计划进行重大增强,开发人员正式建议迁移到 java.time
,也称为 JSR-310。
如果至少使用 Java 6 ,则可以。
原文由 Ole V.V. 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
不熟悉日期时间…
如果您有两个日期,您可以对它们调用 getTime 以获得毫秒数,获取差异并除以 1000。例如
如果你有日历对象,你可以调用
并做同样的事情