Ich habe String
ein Datum dargestellt.
String date_s = "2011-01-18 00:00:00.0";
Ich möchte es in a konvertieren Date
und im YYYY-MM-DD
Format ausgeben .
2011-01-18
Wie kann ich das erreichen?
Okay, basierend auf den Antworten, die ich unten abgerufen habe, habe ich Folgendes versucht:
String date_s = " 2011-01-18 00:00:00.0";
SimpleDateFormat dt = new SimpleDateFormat("yyyyy-mm-dd hh:mm:ss");
Date date = dt.parse(date_s);
SimpleDateFormat dt1 = new SimpleDateFormat("yyyyy-mm-dd");
System.out.println(dt1.format(date));
Es wird aber 02011-00-1
anstelle des gewünschten ausgegeben 2011-01-18
. Was mache ich falsch?
java
string
date
formatting
date-format
amit4444
quelle
quelle
Antworten:
Verwenden Sie
LocalDateTime#parse()
(oderZonedDateTime#parse()
wenn die Zeichenfolge zufällig einen Zeitzonenteil enthält), um aString
in einem bestimmten Muster in a zu analysierenLocalDateTime
.Verwenden Sie
LocalDateTime#format()
(oderZonedDateTime#format()
), umLocalDateTime
aString
in ein bestimmtes Muster zu formatieren .Oder , wenn Sie nicht auf Java sind 8 noch, verwenden Sie
SimpleDateFormat#parse()
ein zu analysieren ,String
in eine in einem bestimmten MusterDate
.Verwenden Sie
SimpleDateFormat#format()
diese Option, um aDate
inString
einem bestimmten Muster zu formatieren .Siehe auch:
Update : Gemäß Ihrem fehlgeschlagenen Versuch: Bei den Mustern wird zwischen Groß- und Kleinschreibung unterschieden . Lesen Sie im
java.text.SimpleDateFormat
Javadoc, wofür die einzelnen Teile stehen. So steht zum BeispielM
für Monate undm
für Minuten. Es gibt auch vierstellige Jahreyyyy
, nicht fünfyyyyy
. Schauen Sie sich die Code-Schnipsel genauer an, die ich hier oben gepostet habe.quelle
Die Formatierung ist CASE-EMPFINDLICH. Verwenden Sie daher MM für Monat und nicht MM (dies ist für Minute) und JJJJ. Als Referenz können Sie das folgende Cheatsheet verwenden.
Beispiele:
quelle
Die Antwort besteht natürlich darin, ein SimpleDateFormat-Objekt zu erstellen und damit Zeichenfolgen auf Datum zu analysieren und Daten auf Zeichenfolgen zu formatieren. Wenn Sie SimpleDateFormat ausprobiert haben und es nicht funktioniert hat, zeigen Sie bitte Ihren Code und eventuelle Fehler an.
Nachtrag: "mm" im Format String ist nicht dasselbe wie "MM". Verwenden Sie MM für Monate und mm für Minuten. Außerdem ist JJJJJ nicht dasselbe wie JJJJ. z.B,:
quelle
hh
gibt Ihnen die Stunde im Bereich von 1-12, die Siea
zusätzlich zum Drucken / ParsenAM
oder verwenden müssenPM
. Verwenden Sie zum Drucken / Analysieren der Stunde im Bereich von 0 bis 23HH
.Warum nicht einfach nutzen?
Dies ist auch der andere Weg:
oder
Prost!
quelle
Verwenden des
java.time
Pakets in Java 8 und höher:quelle
[bearbeitet, um die Korrekturen von BalusC einzuschließen] Die SimpleDateFormat- Klasse sollte den Trick ausführen :
quelle
DD
steht für "Tag im Jahr", nicht für "Tag im Monat".hh
steht für "Stunde in morgens / abends (1-12)", nicht für "Stunde in Tag (0-23)".Andere Antworten sind richtig. Grundsätzlich hatten Sie die falsche Anzahl von "y" -Zeichen in Ihrem Muster.
Zeitzone
Noch ein Problem… Sie haben keine Zeitzonen angesprochen. Wenn Sie UTC beabsichtigt haben , sollten Sie dies gesagt haben. Wenn nicht, sind die Antworten nicht vollständig. Wenn Sie nur den Datumsanteil ohne Uhrzeit wünschen, ist dies kein Problem. Wenn Sie jedoch weitere Arbeiten ausführen, die Zeit erfordern, sollten Sie eine Zeitzone angeben.
Joda-Zeit
Hier ist die gleiche Art von Code, jedoch unter Verwendung der Open-Source- Joda-Time 2.3-Bibliothek eines Drittanbieters
Beim Laufen…
quelle
Bitte beziehen Sie sich hier auf "Datums- und Zeitmuster". http://docs.oracle.com/javase/7/docs/api/java/text/SimpleDateFormat.html
quelle
quelle
quelle
quelle
Sie können einfach verwenden:
Es funktioniert perfekt!
quelle
Sie können auch Teilzeichenfolge () verwenden
Wenn Sie ein Leerzeichen vor dem Datum möchten, verwenden Sie
quelle
Sie können Java 8 neu ausprobieren
date
. Weitere Informationen finden Sie in der Oracle-Dokumentation .Oder Sie können die alte versuchen
quelle
quelle
entfernen Sie eine y Form
SimpleDateFormat dt1 = new SimpleDateFormat("yyyyy-mm-dd");
sollte seinSimpleDateFormat dt1 = new SimpleDateFormat("yyyy-mm-dd");
quelle
DateTimeFormatter
oder an dem veralteten festhaltenSimpleDateFormat
).SimpleDateFormat dt1 = neues SimpleDateFormat ("JJJJ-MM-TT");
quelle
DateTimeFormatter
undDateTimeFormatterBuilder
. Ein VorschlagSimpleDateFormat
für 2019 ist ein schlechter Rat.hh
ist für eine Stunde.Angenommen, Sie möchten 2019-12-20 10:50 AM GMT + 6: 00 bis 2019-12-20 10:50 AM ändern. Zunächst müssen Sie das Datumsformat verstehen. Das erste Datumsformat ist JJJJ-MM-TT hh : mm a zzz und das zweite Datumsformat sind JJJJ-MM-TT hh: MM a
Geben Sie einfach einen String von dieser Funktion wie zurück.
Diese Funktion gibt Ihre gewünschte Antwort zurück. Wenn Sie weitere Anpassungen vornehmen möchten, fügen Sie einfach eine Komponente zum Datumsformat hinzu oder entfernen Sie sie.
quelle