berechnen die Anzahl der Wochen in einem bestimmten Jahr

7

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?

    
AndroidGuy 04.01.2012, 08:17
quelle

8 Antworten

11

Laut dem Wikipedia-Artikel auf ISO-Wochen-Datumsformat können Sie es mit folgendem Code berechnen:

%Vor%     
Manjula Weerasinge 04.01.2012, 08:58
quelle
10

Sie können sich mit den folgenden Informationen aus ISO-Wochendatum

codieren

Im 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:)

    
COD3BOY 04.01.2012 08:44
quelle
5

Quick zwei Liner:

%Vor%     
Samuel 21.10.2016 10:29
quelle
4
%Vor%     
pap 04.01.2012 08:22
quelle
3

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.

    
Magnilex 25.11.2014 17:49
quelle
1

Link zur Antwort

%Vor%     
murt 11.08.2015 21:46
quelle
1

@Manjula Weerasinge Antwort tatsächlich einen Bug für 2016 einzuführen. Hier ist eine bessere Lösung.

%Vor%     
Luca Nicoletti 07.05.2017 09:30
quelle
1

Diese Methode berechnet die Anzahl der Wochen eines ISO-Jahres mithilfe der Joda-Zeitbibliothek.

%Vor%     
Marian Zetu 03.01.2018 19:23
quelle

Tags und Links