Merkwürdiges Verhalten von ww SimpleDateFormat

7

Kann jemand erklären, warum ich diese Werte bekomme, während ich versuche, ein Datum zu analysieren? Ich habe drei verschiedene Eingaben wie folgt ausprobiert:

1) Dritte Woche von 2013

%Vor%

Welche Ausgaben: 02.2013 (wie ich es erwartet habe)

2) Erste Woche von 2013

%Vor%

Welche Ausgaben: 52.2012 (was für mich in Ordnung ist, da die erste Woche von 2013 auch die letzte von 2012 ist)

3) Zweite Woche 2013

%Vor%

Welche Ausgaben: 1.2012 (was absolut nein Sinn für mich macht)

Weiß jemand, warum das passiert ?? Ich muss ein Datum im Format (Woche des Jahres) analysieren. (Jahr). Verwende ich das falsche Muster?

    
fvdalcin 08.05.2014, 12:48
quelle

2 Antworten

16

Sie verwenden ww , was "Woche der Woche" ist, aber dann yyyy , was "Kalenderjahr" und nicht "Wochenjahr" ist. Die Einstellung der Wochenwoche und die Einstellung des Kalenderjahres sind ein Rezept für Probleme, da es sich nur um separate Nummerierungssysteme handelt.

Sie sollten YYYY in Ihrer Formatzeichenfolge verwenden, um die Woche zu spezifizieren ... obwohl es leider so aussieht, als ob Sie den Wert nicht vernünftig erhalten können . (Ich würde eine Calendar.WEEKYEAR Konstante erwarten, aber es gibt keine solche Sache.)

Außerdem beginnen die Werte für die Woche des Jahres bei 1, nicht 0 ... und keine Woche ist in zwei Wochenjahren; es ist entweder die erste Woche von 2013 oder es ist die letzte Woche von 2012 ... es ist nicht beides.

Ich würde es persönlich vermeiden, Woche-Wochen und Wochen zu verwenden, wenn Sie können - sie können sehr verwirrend sein, besonders wenn ein Datum in einem Kalenderjahr in einem anderen Kalenderjahr liegt.

    
Jon Skeet 08.05.2014, 12:50
quelle
2

Verwenden Sie Calendar.getWeekYear () um den Jahreswert mit Calendar.WEEK_OF_YEAR field zu synchronisieren. Weitere Informationen zur Woche des Jahres und zur Woche finden Sie im GregorianCalendar Dok.

    
endragor 08.05.2014 13:14
quelle

Tags und Links