我想提供现代的答案。当被问到这个问题时,其他的答案都很好,但时间还在流逝。今天我建议你用
java.time
, the modern Java date and time 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()
两作品
ZonedDateTime
物体或两个
OffsetDateTime
两个
LocalDateTime
S等。
如果您需要的不仅仅是秒,您应该考虑使用
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秒的持续时间。
为什么选择java.time?
这个
Date
在其他几个答案中使用的课程现在已经过时很久了。Joda Time也用于一对夫妇(可能还有问题),现在处于维护模式,没有计划进行重大改进,开发人员正式建议迁移到
Java.时间
也被称为JSR-310。
问:我能用我的Java版本使用现代API吗?
如果使用至少Java
六
你可以。
在Java 8和以后,新的API是内置的。
在Java 6和7中得到
the ThreeTen Backport
,新类的后口(threeten for
JSR 310
)
在android上,使用android版的threeten backport。它被称为threetenabp,在
this question: How to use ThreeTenABP in Android Project
.