Konvertierung des Java-Datumsformats - falscher Monat

7

Ich habe ein Problem in der Konvertierung des Datums in Java, weiß nicht, wo ich falsch liege ...

%Vor%

Eingabedatum ist 2011-12-15 und ich erwarte das Ergebnis als "15. Dezember 2011", aber ich bekomme es als "15. Januar 2011"

Wo gehe ich falsch?

    
amithgc 07.01.2012, 15:25
quelle

7 Antworten

21

Ihr fromFormat verwendet Minuten, in denen es Monate verwenden soll.

%Vor%     
sje397 07.01.2012, 15:27
quelle
4

Ich denke, das fromFormat sollte "yyyy-MM-dd" sein.

Hier ist das Format:

  • m == Minute in Stunde
  • M == Monat im Jahr

Mehr: Ссылка

    
Dan Hardiker 07.01.2012 15:28
quelle
2

Sehen Sie sich das Javadoc von SimpleDateFormat an und schauen Sie sich an was der m darstellt. Nicht Monate wie du denkst, sondern Minuten.

    
Robin 07.01.2012 15:28
quelle
1

m in SimpleDateFormat steht für Minuten, während M für Monat steht. Daher sollte Ihr erstes Format yyyy-MM-dd sein.

    
ffriend 07.01.2012 15:29
quelle
1

Vom Format sollte sein:

%Vor%     
Brent Worden 07.01.2012 15:30
quelle
1
%Vor%     
kosa 07.01.2012 15:29
quelle
1

java.time

Während die akzeptierte Antwort korrekt ist (Großschreibung MM für Monat), gibt es jetzt einen besseren Ansatz. Die problematischen alten Datum-Zeit-Klassen sind nun veraltet und werden durch die Klassen java.time ersetzt.

Ihre Eingabezeichenfolge befindet sich im Standardformat ISO 8601 . Es muss also kein Formatierungsmuster für das Parsing angegeben werden.

%Vor%

Dump zur Konsole.

%Vor%
  

ld.toString (): 2011-12-15

     

Ausgabe: 15. Dezember 2011

Siehe Live-Code in IdeOne.com .

Über java.time

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 Projekt ThreeTen-Extra 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 .

    
Basil Bourque 24.01.2017 07:46
quelle

Tags und Links