Kalender irrt sich

TheCritter

Aktives Mitglied
Wie kann es sein dass es bei dem Calendar die KW1 2012 es 2x gibt?

Java:
Calendar current_start=new GregorianCalendar(2012,Calendar.DECEMBER,31);
        Calendar aktuell = Calendar.getInstance();
        System.out.println(current_start.get(Calendar.YEAR)+" "+current_start.get(Calendar.WEEK_OF_YEAR));
Bringt "2012 1" als Ergebniss.

Java:
Calendar current_start=new GregorianCalendar(2012,Calendar.JANUARY,3);
        Calendar aktuell = Calendar.getInstance();
        System.out.println(current_start.get(Calendar.YEAR)+" "+current_start.get(Calendar.WEEK_OF_YEAR));
Bringt das gleiche Ergebniss
 
Der Calendar irrt sich da nicht. Das Phänomen rührt daher, dass die KW52 am 30.12. zu Ende war. 53 KWs gibt es nicht. Darum wird der 31.12. als erster Tag der 1. KW des Folgejahres gezählt. Schau Dir mal einen normalen Papierkalender von 2012 an. Da ist es genauso.
 
Zuletzt bearbeitet von einem Moderator:
> Kann das 2012 UND 2013 liefern?

wenn nur 2013 gewünscht ist, warum dann 2012?
ob es passt muss sich zeigen

-------

und bei SimpleDateFormat ist Y statt y neu dabei in Java 1.7

siehe auch
http://www.java-forum.org/java-basi...roblem-erster-kalenderwoche-2.html#post975899
ab diesem bestimmen Posting bis zum Ende bzw. zuvor ab Posting 1 bis zu diesem Posting

komisch warum das zuletzt mindesten 3x gefragt wurde, vorher kann ich mich an ein derartiges Thema nicht erinnern,
liegt wohl am aktuellen Übergang Ende 2012, der nicht ganz so häufig vorkommt? 😉
 
Zuletzt bearbeitet von einem Moderator:
Genau, liegt garantiert daran weil das Thema gerade aktuell ist.

@maki: Super, Danke! Werde das dann gleich mal ausprobieren. Hatte nur diese get Methode in Erinnerung und daher diese Methode übersehen.
 
alleine der variablen-name "current_start" macht mir schon angst ...

erstmal entspricht er nicht den conventions ... und zweitens deutet er an das hier wohl irgendwie mit daten gerechnet werden soll ... dafür würde ich DRINGEND einen timestamp empfehlen (also sekunden seit 01.01.1970 00:00:00) ... damit kann man einfach rechnen ... und mit den entsprechenden klassen in ein datum umwandeln
 
😀
Das stimmt allerdings. Die Sache ist aber dass dieses Programm 1x pro Woche (daher KW) laufen soll und etwa in eine Datenbank schreiben soll. Nur da ich rückwirkend auch Daten benötige, habe ich dieses Datum fest eingetragen. Später wird dafür der aktuelle Timestamp eingetragen.
 

Zurück
Oben