Ich möchte die moderne Antwort geben. Die anderen Antworten waren in Ordnung, als diese Frage gestellt wurde, aber die Zeit vergeht. Heute empfehle ich Ihnen die Verwendung java.time
der modernen Java-API für Datum und Uhrzeit .
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");
Dies druckt:
Difference: 2689 seconds
ChronoUnit.SECONDS.between()
arbeitet mit zwei ZonedDateTime
Objekten oder zwei OffsetDateTime
s, zwei LocalDateTime
s usw.
Wenn Sie etwas anderes als nur die Sekunden benötigen, sollten Sie die Duration
Klasse in Betracht ziehen :
Duration dur = Duration.between(aDateTime, otherDateTime);
System.out.println("Duration: " + dur);
System.out.println("Difference: " + dur.getSeconds() + " seconds");
Dies druckt:
Duration: PT44M49.247S
Difference: 2689 seconds
Die erste der beiden Zeilen gibt die Dauer im ISO 8601-Format aus. Die Ausgabe bedeutet eine Dauer von 44 Minuten und 49,247 Sekunden.
Warum java.time?
Die Date
in mehreren anderen Antworten verwendete Klasse ist längst veraltet. Joda-Time, das auch in einigen Fällen (und möglicherweise in der Frage) verwendet wird, befindet sich jetzt im Wartungsmodus. Es sind keine größeren Verbesserungen geplant, und die Entwickler empfehlen offiziell die Migration auf java.time
JSR-310, auch bekannt als JSR-310.
Frage: Kann ich die moderne API mit meiner Java-Version verwenden?
Wenn Sie mindestens Java 6 verwenden , können Sie.