Ich entwickle und Android-App, wo ich den Unterschied zwischen zwei Mal berechnen muss. Ich muss den Zeitunterschied für 24 Stunden berechnen, und auch den Unterschied zwischen Zeiten an zwei Tagen (ZB heute 17.00 Uhr bis 09.00 Uhr morgen ).
Ich habe den folgenden Code ausprobiert, um den Unterschied zu berechnen, der nur für 24 Stunden funktioniert,
%Vor%Sie können so etwas auch versuchen, wenn Sie sicher sind, dass die 9 Uhr am nächsten Tag ist, können Sie einen Tag hinzufügen und den Unterschied berechnen:
%Vor%5
... oder ...
%Vor%53
Der moderne Ansatz verwendet die Klassen java.time.
LocalTime
Die Klasse LocalTime
repräsentiert eine Zeit der Tag ohne Datum und ohne Zeitzone.
Duration
Holen Sie sich ein Duration
Objekt, um die von Zeit.
ChronoUnit
Verwenden Sie für die Anzahl der Stunden ChronoUnit
.
Für Android finden Sie die Projekte ThreeTen-Backport und ThreeTenABP. Siehe die letzten Punkte unten.
ZonedDateTime
Wenn Sie Tage über Mitternacht überschreiten möchten, müssen Sie Daten und Zeitzonen zuweisen.
Eine Zeitzone ist entscheidend für die Bestimmung eines Datums. Für jeden Moment variiert das Datum von Zone zu Zone. Zum Beispiel, ein paar Minuten nach Mitternacht in Paris Frankreich ist ein neuer Tag während noch "gestern" in Montréal Québec .
Geben Sie einen richtigen Zeitzonennamen im Format continent/region
an, z. B. America/Montreal
, Africa/Casablanca
oder Pacific/Auckland
. Verwenden Sie niemals die Abkürzung für 3-4 Buchstaben wie EST
oder IST
, da sie keine echten Zeitzonen sind, nicht standardisiert und nicht einmal eindeutig (!).
Sehen Sie sich diesen Code live bei IdeOne.com an .
53
Das Framework java.time ist in Java integriert 8 und später. Diese Klassen ersetzen die problematischen alten Legacy Datum-Uhrzeit-Klassen wie java.util.Date
, Calendar
, & amp; SimpleDateFormat
.
Das Joda-Time Projekt, jetzt in Wartungsmodus , rät Migration zum java.time Klassen.
Weitere Informationen finden Sie im Oracle-Lernprogramm . Und suchen Sie nach Stack Overflow für viele Beispiele und Erklärungen. Spezifikation ist JSR 310 .
Wo erhalten Sie die Klassen java.time?
Tags und Links java android date time simpledateformat