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.timeder 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 ZonedDateTimeObjekten oder zwei OffsetDateTimes, zwei LocalDateTimes usw.
Wenn Sie etwas anderes als nur die Sekunden benötigen, sollten Sie die DurationKlasse 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 Datein 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.timeJSR-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.