# Anzahl Kalenderwochen eines Jahres errechen



## RipdEaTh (3. November 2006)

Hi Leute!

Ich stehe mal wieder vor nem kleinen Problem 
Ich muss wie oben beschrieben errechnen, wieviele Kalenderwochen ein Jahr besitzt.. (Gibt ja einige Jahre, wie z.B. 2004, die 53 Kalenderwochen haben)..

Leider habe ich bisher noch garkeine Idee, wie ich das am besten umsetzen kann.. 

Ihr könnt mir bestimmt wieder weiterhelfen 

LG


----------



## henning-malaysia (3. November 2006)

Hi, 

ich würd einfach ein GregorianCalendar-Objekt instanzieren und auf den 31.12. des gewünschten Jahres setzen und dann mit get(...) die aktuelle Kalenderwoche ausgeben lassen. 

Schöns Wochenende

Henning


----------



## darksmilie (3. November 2006)

hier findest du alles was du dafür brauchst:

Calendar und GregorianCalendar


----------



## RipdEaTh (3. November 2006)

Hi!

Vielen Dank für eure Hilfe 
Eigentlich hätte ich selbst drauf kommen können *g* Aber naja..

Aber das ganze klappt nicht so ganz.
Ich erstelle ein GregorianCalendar Objekt mit dem Konstruktur wo Jahr, Monat und Tag angegeben werden.

Wenn ich dann die statische Variable WEEK_OF_YEAR abfrage, bekomme ich immer 3 zurück.. Egal welches Datum instanziiert wurde..

Wisst ihr vll was das sein soll?
Als Argumente an GregorianCalendar werden Integer übergeben..


```
GregorianCalendar var = new GregorianCalendar(2004, 11, 31);
System.out.println("KWs: " + var.WEEK_OF_YEAR);
```

Der Monat Dezember wird in diesem Fall mit 11 angegeben, da der Calendar mit 0 beginnt. Wenn ich .getTime() aufrufe bekomme ich auch das richtige Datum zurück.. Warum klappt das mit der KW nicht?

Hoffe ihr könnt mir helfen. 

Vielen Dank im voraus. LG


----------



## schnuffie (3. November 2006)

Was Du abfragst hat nichts mit den Wochen zu tun, sondern die 3 ist lediglich der Konstantenwert, der innerhalb der Klasse benutzt wird, um die Wochen zu errechnen, da innerhalb des Objekts sicherlich nur der Zeitpunkt in einer long-Variablen steht.


```
int weeks;
Calendar c;
for (int i = 1980; i < 2020; i++) {
c = new GregorianCalendar(i,11,31);
weeks = c.get(Calendar.WEEK_OF_YEARS);
System.out.println(i + ": " + weeks + " Wochen");
}
```


----------



## BLOEBAUM (3. November 2006)

Hallo Schnuffie,

erhälst du für alle angegebenen Jahre die korrekte Wochenzahl?

Auszug aus meinem Ergebnis:

1984: 1 Wochen
1985: 1 Wochen
1986: 1 Wochen
1987: 53 Wochen
1988: 52 Wochen
1989: 52 Wochen
1990: 1 Wochen
1991: 1 Wochen
1992: 53 Wochen
1993: 52 Wochen


Warum wird für bestimmte Jahre nur 1 Woche ausgegeben?

Gruß

Harald


----------



## Thomas Darimont (4. November 2006)

Hallo!

Schau mal hier:

```
/**
 * 
 */
package de.tutorials;

import java.util.Calendar;
import java.util.GregorianCalendar;

/**
 * @author TDarimont
 * 
 */
public class WeeksInYearExample {

    /**
     * @param args
     */
    public static void main(String[] args) {
        Calendar calendar = GregorianCalendar.getInstance();
        for (int currentYear = 1983; currentYear < 2020; currentYear++) {
            calendar.set(Calendar.YEAR, currentYear);
            System.out.println(currentYear + " weeks: "
                    + calendar.getActualMaximum(Calendar.WEEK_OF_YEAR));
        }
    }

}
```

Ausgabe:

```
1983 weeks: 52
1984 weeks: 52
1985 weeks: 52
1986 weeks: 52
1987 weeks: 53
1988 weeks: 52
1989 weeks: 52
1990 weeks: 52
1991 weeks: 52
1992 weeks: 53
1993 weeks: 52
1994 weeks: 52
1995 weeks: 52
1996 weeks: 52
1997 weeks: 52
1998 weeks: 53
1999 weeks: 52
2000 weeks: 52
2001 weeks: 52
2002 weeks: 52
2003 weeks: 52
2004 weeks: 53
2005 weeks: 52
2006 weeks: 52
2007 weeks: 52
2008 weeks: 52
2009 weeks: 53
2010 weeks: 52
2011 weeks: 52
2012 weeks: 52
2013 weeks: 52
2014 weeks: 52
2015 weeks: 53
2016 weeks: 52
2017 weeks: 52
2018 weeks: 52
2019 weeks: 52
```

Gruß Tom


----------



## BLOEBAUM (6. November 2006)

Hallo Tom,

danke für den Sourcecode.
Das Ergebnis passt!!

Gruß

Harald


----------

