Verwenden Sie entweder Joda-Time oder die neue java.time Paket in Java 8.
Beide Frameworks verwenden, um die Halboffen Ansatz, bei dem der Anfang inklusive während das Ende ist exklusiv. Manchmal notiert als [)
. Dies ist im Allgemeinen der beste Ansatz zum Definieren von Zeitspannen.
java.time
Der java.time Rahmen in Java 8 gebaut und später hat eine Period
Klasse eine Zeitspanne als eine Reihe von Jahren zu vertreten, eine Anzahl von Monaten, und eine Anzahl von Tagen. Aber diese Klasse ist auf ganze Tage beschränkt, keine Darstellung von Stunden, Minuten und Sekunden.
Beachten Sie, dass wir eine Zeitzone angeben, die für die Bestimmung eines Datums entscheidend ist. Zum Beispiel beginnt ein neuer Tag früher in Paris als in Montréal.
ZoneId zoneId = ZoneId.of("America/Montreal");
LocalDate now = LocalDate.now(zoneId);
LocalDate then = LocalDate.of(2001, 1, 1);
Period period = Period.between(then, now);
Dann: 2001-01-01. Jetzt: 2015-09-07. Periode: P14Y8M6D. Tage: 5362
Für ganze Tage ist Daylight Saving Time (DST) irrelevant.
Wenn Sie eine Anzahl von insgesamt Tagen wollen, verwenden Sie die ChronoUnit
Enum, die einige Berechnungsmethoden enthält. Beachten Sie, dass die Berechnungen lange zurückgehen.
long days = ChronoUnit.DAYS.between(then, now); // "5362" seen above.
I have asked über eine volle Periode in java.time tun, einschließlich Stunden, Minuten, Sekunden. Nicht möglich ab Java 8. Eine überraschende Problemumgehung unter Verwendung der gebündelten Bibliotheken was suggested von Meno Hochschild: Verwenden Sie eine Duration
Klasse, die in der javax.xml.datatype package gefunden wird.
Joda-Time
Hier ist ein Code Beispiel in Joda-Time 2.3.
DateTimeZone timeZone = DateTimeZone.forID("Europe/Paris");
DateTime start = new DateTime(2014, 1, 2, 3, 4, 5, timeZone);
DateTime stop = new DateTime(2014, 5, 2, 3, 4, 5, timeZone);
Period period = new Period(start, stop);
toString
Aufruf erhalten Sie eine String-Darstellung in Form von der ISO 8601 Standard definiert erhalten, PnYnMnDTnHnMnS
.
Siehe http://www.xmission.com/~goodhill/dates/deltaDates.html für einige Hintergrundinformationen. –
Das ist ein schöner Artikel. Vielen Dank! – Anirudh
@Anirudh Suche StackOverflow für "joda" und Begriff wie "span", "Intervall", "Dauer", "Zeitraum". Sie finden viele Beispiele mit Diskussion. –