In meinem Programm geht es darum, einen Kurosawa zu erzeugen (zu produzieren) und die Kunden dazu zu bringen, ihn herzustellen.
Jedes Mal, wenn wir einen Kurosawa generieren, müssen wir seine ID, sein Produktionsdatum und das Ablaufdatum drucken, das 3 Monate nach dem Produktionsdatum liegt.
Mein Problem ist: Wie kann ich das Datum nach drei Monaten berechnen?
Verwenden Sie die integrierte Java-Kalender-API .
%Vor%Sehen Sie in der API nach, wie Sie das Datum genau in dem von Ihnen gewünschten Format ausdrucken können.
Sie können auch die viel mächtigere und einfachere Joda Zeitbibliothek verwenden:
%Vor%Joda Time hat viele Vorteile gegenüber der integrierten Java-Kalender-API
Der moderne Ansatz verwendet java.time Klassen.
Die Klasse LocalDate
repräsentiert einen reinen Datumswert ohne Uhrzeit und ohne Zeitzone.
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 .
Wenn keine Zeitzone angegeben ist, wendet die JVM implizit ihre aktuelle Standardzeitzone an. Dieser Standardwert kann sich jederzeit ändern, sodass die Ergebnisse variieren können. Es ist besser, die gewünschte / erwartete Zeitzone explizit als Argument anzugeben.
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 (!).
Fügen Sie drei Monate hinzu und lassen Sie java.time die Berechnung durchführen.
%Vor% 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?
Das ThreeTen-Extra -Projekt erweitert java.time um zusätzliche Klassen. Dieses Projekt ist ein Testfeld für mögliche zukünftige Erweiterungen von java.time. Hier finden Sie einige nützliche Klassen wie Interval
, < a href="http://www.threeten.org/threeten-extra/apidocs/org/threeten/extra/YearWeek.html"> YearWeek
, YearQuarter
und mehr .
Wenn Sie mit Datumsarithmetik arbeiten müssen, funktioniert JODA besser, da Kalender Timestamps mag.