Ich frage mich, warum 'Y' 2012 zurückgibt, während 'y' 2011 zurückgibt in SimpleDateFormat
:
System.out.println(new SimpleDateFormat("Y").format(new Date())); // prints 2012
System.out.println(new SimpleDateFormat("y").format(new Date())); // prints 2011
Kann jemand erklären warum?
java
date
simpledateformat
Eng.Fouad
quelle
quelle
Antworten:
Woche Jahr und Jahr. Aus Javadoc
quelle
$ date Wed Dec 30 00:42:51 UTC 2015
$ date +%G 2015
$ date +%Y 2015
Einige Software ist verwirrt:strftime
Berechnet heute (29.12.2015) mit Woche 53 und Woche-Jahr als 2015.Hier ist ein Java 8-Update mit etwas Code, da GregorianCalendar wahrscheinlich veraltet oder aus zukünftigen JDK-Versionen entfernt wird.
Der neue Code wird in der
WeekFields
Klasse und speziell für Klein-y
/ GroßbuchstabenY
mit demweekBasedYear()
Feldzugriff behandelt.Die Einrichtung dieser
WeekFields
Instanz hängt vom Gebietsschema ab und kann je nach Gebietsschema unterschiedliche Einstellungen haben. US-amerikanische und europäische Länder wie Frankreich haben möglicherweise einen anderen Tag als Wochenbeginn.DateFormatterBuilder
Instanziieren Sie beispielsweise in Java 8 den Parser mit dem Gebietsschema und verwenden Sie dieses Gebietsschema für dasY
Symbol:Hier ist ein Beispiel
Und in Bezug des Lokals und das obere Gehäuse
Y
, können Sie entweder mit der Kommandozeilenoption spielen-Duser.language=
(fr
,en
,es
, usw.) oder zwingen , die locale beim Aufruf Zeit:quelle
Format
Y
, um das Wochenjahr zu erhalten, wenn der Kalender das Wochenjahr unterstützt. (getCalendar().isWeekDateSupported()
)quelle
Ich habe gelernt , auf die harte Weise die JSTL - Tag - Bibliothek
format:date
mitshort
als das angeforderte Format verwendet YYYY unter der Decke. Was in der Tat das Druckdatum um ein Jahr vorverlegen kann.quelle
Ich konvertiere ein Datum hin und her - Sie würden das gleiche Jahr erwarten, wenn Sie dies tun.
Beachten Sie, wie es einen voranbringt!
Das ist schlecht: JJJJ!
Sie können es hier ausführen .
Das ist gut: JJJJ
quelle