SimpleDateFormat, falsches Jahr

markus2510

Mitglied
Hallo,

es geht um folgenden Code:

GregorianCalendar cal=new GregorianCalendar();
cal.set(Calendar.DAY_OF_MONTH,1);
cal.set(Calendar.MONTH,0);
cal.set(Calendar.YEAR, 2017);

SimpleDateFormat sdf=new SimpleDateFormat("dd.MM.YYYY");
System.out.println(sdf.format(cal.getTime()));

Wieso erhalte ich hier die Ausgabe 01.01.2016?
Wenn ich statt 2017 das Jahr 2018 angebe bekomme ich die richtige Ausgabe 01.01.2018

Hier einige andere Beispiele:

Jahr 2016 -> 01.01.2016
Jahr 2015 -> 01.01.2015
Jahr 2014 -> 01.01.2014
Jahr 2013 -> 01.01.2013
Jahr 2012 -> 01.01.2011 ???
Jahr 2011 -> 01.01.2010 ???
Jahr 2010 -> 01.01.2009 ???
Jahr 2009 -> 01.01.2009
Jahr 2008 -> 01.01.2008
Jahr 2007 -> 01.01.2007
Jahr 2006 -> 01.01.2005 ???
Jahr 2005 -> 01.01.2004 ???
Jahr 2004 -> 01.01.2004

Was läuft hier falsch?

lg, Markus
 
Also der Grund warum dir das Datum falsch angezeigt wird ist, weil du die falschen Platzhalter benutzt. Auch in der Dokumentation ist beschrieben, dass für das Jahr ein kleines y genommen werden soll.

BTW: Seit Java 8 gibt es eine neue Date-API. Siehe zB LocalDateTime oder LocalDate
 

Zurück
Oben