Ich möchte die Anzahl der Wochen in einem bestimmten Jahr bekommen. Obwohl 52
als generalisierte weltweite Antwort akzeptiert wird, haben die Kalender für 2015
, 2020
und 2026
tatsächlich 53
weeks.
Gibt es irgendeine Möglichkeit, dass ich das berechnen kann, oder irgendwelche Funktionen, die mir helfen werden?
Laut dem Wikipedia-Artikel auf ISO-Wochen-Datumsformat können Sie es mit folgendem Code berechnen:
%Vor%Sie können sich mit den folgenden Informationen aus ISO-Wochendatum
codierenIm Durchschnitt hat ein Jahr 53 Wochen alle 5,6 Jahre.
Die folgenden 71 Jahre in einem 400-jährigen Zyklus (addieren Sie 2000 für gegenwärtige Jahre) haben 53 Wochen. Nicht aufgeführte Jahre haben 52 Wochen.
004, 009, 015, 020, 026, 032, 037, 043, 048, 054, 060, 065, 071, 076, 082, 088, 093, 099, 105, 111, 116, 122, 128, 133 139, 144, 150, 156, 161, 167, 172, 178, 184, 189, 195, 201, 207, 212, 218, 224, 229, 235, 240, 246, 252, 257, 263, 268, 274 , 280, 285, 291, 296, 303, 308, 314, 320, 325, 331, 336, 342, 348, 353, 359, 364, 370, 376, 381, 387, 392, 398.
Sie können die obigen Informationen verwenden, um 52 oder 53 entsprechend zurückzugeben:)
Ich möchte meine Verwendung der neuen Date-API in Java 8 mit dem folgenden Code erläutern:
%Vor%Die Ausgabe ist:
2004 hat 53 wochen
2009 hat 53 wochen
2015 hat 53 wochen
2020 hat 53 Wochen
2026 hat 53 Wochen
2032 hat 53 Wochen
...
Und so weiter ...
Der date.withDayOfMonth(1).withMonth(6);
Trick ist, weil das Auslassen dieses Ergebnisses zu einer etwas anderen Ausgabe führt, wenn LocalDate.of(year, 1, 1)
übergeben wird:
2004 hat 53 Wochen
2005 hat 53 Wochen
...
Ich bin noch neu in der Java 8 Date API, aber ich bin ziemlich sicher, dass dieses Verhalten becuase 2005-01-01 ist Teil der Woche 53 von 2014. Dies macht date.range(WeekFields.ISO.weekOfWeekBasedYear()).getMaximum()
gibt die Anzahl der Wochen für die Woche zurück basierend auf dem Jahr 2014.
@Manjula Weerasinge Antwort tatsächlich einen Bug für 2016 einzuführen. Hier ist eine bessere Lösung.
%Vor%Diese Methode berechnet die Anzahl der Wochen eines ISO-Jahres mithilfe der Joda-Zeitbibliothek.
%Vor%