Datum # getDate () ist eine veraltete Methode nach JDK 1.1. Sie sollten stattdessen die Klasse Kalender verwenden um Daten zu manipulieren.
Von API :
Vor JDK 1.1 hatte die Klasse Date zwei zusätzliche Funktionen. Es erlaubte die Interpretation der Daten als Jahr, Monat, Tag, Stunde, Minute, und zweite Werte. Es erlaubt auch das Formatieren und Parsen von Datum Saiten. Leider war die API für diese Funktionen nicht zugänglich zur Internationalisierung. Ab JDK 1.1 sollte die Kalenderklasse sein Wird zum Konvertieren zwischen Datums- und Uhrzeitfeldern und der DateFormat-Klasse verwendet sollte verwendet werden, um Datumszeichenfolgen zu formatieren und zu analysieren. Die entsprechende Methoden in Date sind veraltet.
Es ist auch in der API eindeutig dokumentiert mit Datum # getDate () , um Calendar#get(Calendar.DATE);
%Vor%Veraltet. Ab JDK Version 1.1 ersetzt durch Calendar.get (Kalender.DAY_OF_MONTH)
Die akzeptierte Antwort ist korrekt. Die Klassen java.util.Date und .Calendar sind jedoch bekanntermaßen mühsam. Vermeide sie. Verwenden Sie entweder Joda-Time oder die neue Paket java.time (in Java 8).
Außerdem vermischt der Code in der Frage Datum-Uhrzeit-Arbeit mit Formatierung. Trennen Sie diese Aufgaben, um Ihren Code zu vereinfachen und das Testen / Debuggen zu vereinfachen.
Die Zeitzone ist in der Date-Time-Arbeit entscheidend. Wenn Sie das Problem ignorieren, wird die Standardzeitzone der JVM angewendet. Eine bessere Vorgehensweise besteht darin, immer anzugeben, anstatt sich auf den Standardwert zu verlassen. Auch wenn Sie die Standardeinstellung möchten, rufen Sie getDefault
explizit auf. .
Der Beginn des Tages wird durch die Zeitzone definiert. Ein neuer Tag dämmert früher in Paris als in Montréal. Wenn Sie also mit "gestern" den ersten Moment dieses Tages meinen, dann sollten Sie (a) eine Zeitzone angeben und (b) rufen Sie withTimeAtStartOfDay
.
Beispielcode in Joda-Time 2.3.
%Vor%Oder konvertieren Sie von einem java.util.Date-Objekt.
%Vor%Ziehe einen Tag ab, um zum gestrigen Tag (oder Tag davor) zu gelangen.
%Vor%Joda-Time und java.time parsen / generieren standardmäßig Zeichenfolgen im Format ISO 8601 .
%Vor%Verwenden Sie einen Formatierer für ein vollständiges Datum als vierstelligen Jahr, zweistelligen Monat des Jahres und zweistelligen Tag des Monats (JJJJ-MM-TT). Ein solcher Formatierer ist bereits in Joda-Time definiert.
%Vor%