# Ermittlung Anfangs- und Enddatum einer Kalenderwoche



## rzimmer (14. Apr 2007)

Wie kann ich zu einer Kalenderwoche, die mir von der Klasse GregorianCalendar
geliefert wird, also z.B. aktuell die "15" das End- und Startdatum dieser Woche 
ermitteln?

Bsp: Ich hole mir die aktuelle Woche, also 
	
	
	
	





```
(cal.get(Calendar.WEEK_OF_YEAR));
```
--> Ergebnis 15

Ich möchte nun ein Ergebnis in der Form 
"Woche 15, erster Tag: 09.04.2007, letzter Tag: 15.04.2007"

Ein Code-Beipiel wäre super

Vielen Dank und Gruß
Robert


----------



## SlaterB (14. Apr 2007)

nimm dir dein cal-Objekt,
setzte DAY_OF_WEEK auf 0 und 6 und du dürftest den Anfang oder das Ende haben


----------



## Guest (14. Apr 2007)

```
Calendar c = Calendar.getInstance(Locale.GERMAN);
int firstDayOfWeek = c.getFirstDayOfWeek();
int lastDayOfWeek = firstDayOfWeek>1? firstDayOfWeek-1 : 7;
System.out.println(c.get(Calendar.WEEK_OF_YEAR));
c.set(Calendar.DAY_OF_WEEK, firstDayOfWeek);
System.out.println(c.getTime());
c.set(Calendar.DAY_OF_WEEK, lastDayOfWeek);
System.out.println(c.getTime());
```


----------



## Guest (14. Apr 2007)

Kleine Korrektur (Konstanten statt int-Literale)

```
Calendar c = Calendar.getInstance(Locale.GERMAN);
int firstDayOfWeek = c.getFirstDayOfWeek();
int lastDayOfWeek = firstDayOfWeek>Calendar.SUNDAY? firstDayOfWeek-1 : Calendar.SATURDAY;
System.out.println(c.get(Calendar.WEEK_OF_YEAR));
c.set(Calendar.DAY_OF_WEEK, firstDayOfWeek);
System.out.println(c.getTime());
c.set(Calendar.DAY_OF_WEEK, lastDayOfWeek);
System.out.println(c.getTime());
```


----------



## Gast (14. Apr 2007)

Hi, beim setzen von DAY_OF_WEEK zwischen 0 und 6 bekomme ich folgende Ergebnisse:

0 -> Sat Apr 14 21:50:52 AFT 2007
1 -> Sun Apr 15 21:51:14 AFT 2007
2 -> Mon Apr 09 21:51:37 AFT 2007
3 -> Tue Apr 10 21:51:51 AFT 2007
4 -> Wed Apr 11 21:52:08 AFT 2007
5 -> Thu Apr 12 21:52:22 AFT 2007
6 -> Fri Apr 13 21:52:35 AFT 2007

Ich verstehe nicht die Logik. Dachte 0 ist der erste und 6 der letzte Tag...

Dank und Gruß
Robert


----------



## rzimmer (14. Apr 2007)

OK, hat funktioniert. Vielen Dank!


----------



## Guest (14. Apr 2007)

Gast hat gesagt.:
			
		

> Hi, beim setzen von DAY_OF_WEEK zwischen 0 und 6 bekomme ich folgende Ergebnisse:
> 
> 0 -> Sat Apr 14 21:50:52 AFT 2007
> 1 -> Sun Apr 15 21:51:14 AFT 2007
> ...


Wie kommst du auf die 0 bis 6? Calendar.SUNDAY = 1  und Calendar.SATURDAY = 7.
Was der erste Tag der Woche ist, häbgt von den Local-Einstellungen ab (siehe Calendar#getFirstDayOfWeek()).


----------



## SlaterB (15. Apr 2007)

> Wie kommst du auf die 0 bis 6?
war mein ungenauer Tipp


----------



## rzimmer (15. Apr 2007)

Ich möchte nun für den ersten Wochentag die Uhrzeit 00:00:00 a.m.
und für den letzten Wochentag die Uhrzeit 24:00:00 p.m vordefinieren.

Habe folgendes versucht:


```
int firstDayOfWeek = cal.getFirstDayOfWeek();
	 int lastDayOfWeek = firstDayOfWeek>Calendar.SUNDAY? firstDayOfWeek-1 : Calendar.SATURDAY;
	 System.out.println(cal.get(Calendar.WEEK_OF_YEAR));
	 cal.set(Calendar.DAY_OF_WEEK, firstDayOfWeek);
	 
	 cal.set(Calendar.HOUR, 0);
	 
	 System.out.println(cal.getTime().toString()); //returns String of calender-object
	 cal.set(Calendar.DAY_OF_WEEK, lastDayOfWeek);
	 
	 cal.set(Calendar.HOUR, 24); 
	 
	 System.out.println(cal.getTime().toString()); //returns String of calender-object
```

Bekomme aber als Ergebnis keine gesetzte Zeit sondern es werden jeweils 24 Stunden auf
den ersten und letzten Wochentag dazuaddiert:

Mon Apr 09 03:25:19 AFT 2007
Mon Apr 16 03:25:19 AFT 2007

Gibt es eine Möglichkeit die Uhrzeit für die jeweiligen Wochentage zu setzen?

Danke und Gruß
Robert


----------



## SlaterB (15. Apr 2007)

es gibt in Java keinen Unterschied zwischen 0.00 und 24.00,
es gibt nur Sonntag 23.59.59 und Montag 0.00.00,
wenn dir das wichtig ist, dann musst du da was manuell drumherum bauen

(nehme ich an, an den Wochentagen 0-6 siehst du mein begrenztes Wissen 
vielleicht gibts ja Einstellungen)

edit:
du hattest ja eine etwas andere Frage,
bei mir funktioniert das Setzen der Stunde einigermaßen,
mit set HOUR wird aber nicht am/pm geändert, deswegen bei mir Stunde 12 (0./24. Stunde am Nachmittag)
setzte HOUR_OF_DAY auf 0,

aber warum 3 Uhr bei dir rauskommt?
hängt wohl mit der Zeitzone zusammen, die Ausgabe ist in einer Zeitzone, 
die 3 Stunden von der Zeitzone des Objektes abweicht?


----------



## Guest (15. Apr 2007)

```
Calendar c = Calendar.getInstance(Locale.GERMAN);
int firstDayOfWeek = c.getFirstDayOfWeek();
int lastDayOfWeek = firstDayOfWeek > Calendar.SUNDAY ? firstDayOfWeek - 1 : Calendar.SATURDAY;
System.out.println(c.get(Calendar.WEEK_OF_YEAR));
c.set(Calendar.DAY_OF_WEEK, firstDayOfWeek);
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE), 0, 0, 0);
c.set(Calendar.MILLISECOND, 0);
System.out.println(c.getTime());
c.set(Calendar.DAY_OF_WEEK, lastDayOfWeek);
// Einen Tag vor; Uhrzeit auf 0 Uhr - 1 Sekunde ==> Also 23:59:59 am Vortag
c.set(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE) + 1, 0, 0, -1);
c.set(Calendar.MILLISECOND, 99);
System.out.println(c.getTime());
```
Ausgabe:
15
Mon Apr 09 00:00:00 CEST 2007
Sun Apr 15 23:59:59 CEST 2007


----------

