Gibt es eine Möglichkeit, eine Java8 Dauer von einem Jahr, die Konten für Schaltjahre?
Brauche ich die Anzahl der Tage in einem Jahr und ich wollte mit Java8 neue Zeit api.
Jedoch kann ich Sie nicht mehr Duration.ofDays(365)
weil es nicht Konto für Schaltjahre. Und Duration.of(1, ChronoUnit.YEARS)
nicht Fliegen, weil der java.time.temporal.UnsupportedTemporalTypeException: Unit must not have an estimated duration
Schaute ich in die Periode, aber es erscheint nicht sinnvoll, von Jahren zu Tage.
Ich das Gefühl, ich bin hier etwas fehlt? Ich könnte was dazu schreiben, fügen Sie einen Tag, wenn das Jahr ein Schaltjahr ist, aber es scheint, wie ich sollte in der Lage sein zu handhaben, diese aus der box.
- mögliche Duplikate von Erste-Dauer unter Verwendung der neuen dateTime-API
Du musst angemeldet sein, um einen Kommentar abzugeben.
Als pro Reaktion in Bekommen Dauer über die neue dateTime-API Sie sollten mit
Es ist wichtig zu verstehen den Unterschied zwischen
Duration
(genaue Anzahl der Nanosekunden < 1 Tag)Period
(variable > 1 Tag).Duration
nicht Konto für leap Tage, Tageslicht Einsparungen Zeit oder Schaltsekunden, für Beispiel, und soll für die Dauer von weniger als einen Tag, höchstens ein paar Tage. So ist es wirklich besser, wenn du in der Lage bist, zu verwendenPeriod
statt.Weil verschiedenen Jahren unterschiedliche Anzahl der Tage, wenn Sie wollen, finden Sie die Anzahl der Tage in einem Jahr, müssen Sie angeben, in welchem Jahr du redest.
Wenn Sie möchten, die Anzahl der Tage in einem bestimmten Jahr, können Sie
Wenn Sie möchten, dass das Datum in einem Jahr ab jetzt, die Sie verwenden können,
oder
Wenn Sie die Anzahl der Tage zwischen zwei Daten, können Sie
So finden Sie die Anzahl von Tagen zu dem Datum, ein Jahr ab jetzt, die Sie verwenden können,
Wenn Sie möchten, um zu sehen, ob eine Mitgliedschaft von einem Jahr noch gültig ist, können Sie
Year.now().length()
. Wenn Sie möchten, dass das Datum, an dem die Mitgliedschaft endet, das istLocalDate.now().plusYears(1)
.LocalDate.now().isBefore(membershipStart.plusYears(1))
. Die nächste Berechnung ist "Wann endet die Mitgliedschaft mit dem Ende"?Duration.ofDays(DAYS.between(startDate, startDate.plusYears(1)))
Duration
(genaue Anzahl der Nanosekunden) undPeriod
(variable). Dauer wird nicht Konto für die Sommerzeit oder Schaltsekunden, zum Beispiel. So ist es wirklich besser, wenn du in der Lage bist, zu verwenden LocalDates und Zeiten statt.Period
ist die richtige Wahl überDuration
.Scheint es klar zu sein, die Sie nicht wollen, dass eine Dauer (= zwischen zwei Daten), aber das Jahr Länge von einem bestimmten Datum.
Java 8 Datum & Zeit ist erstaunlich komplett.
Wenn du meinst, im 5. Januar 2004 bis 5. Januar 2005 = 366 und 2. März 2004 bis März 2rd 2005 = 365:
Erklärung: grundsätzlich ist die Länge 365. Aber wenn date >= März, der Februar im nächsten Jahr gezählt wird, ansonsten ist dieses Jahr im Februar.
Daran, dass
plusYears(1)
wird sich nicht ändern, TAG oder MONAT.Auch weder Schaltsekunde noch Stunden/Minuten am Februar 29th betrachtet werden.
Year.of(2004).length()
.ChronoUnit.DAYS.between(date, date.plusYears(1))
. So dass Sie nicht brauchen, um manuell test des Monats.