Ermittlung Anfangs- und Enddatum einer Kalenderwoche

Status
Nicht offen für weitere Antworten.
R

rzimmer

Gast
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
Code:
 (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
 
S

SlaterB

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

Guest

Gast
Code:
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());
 
G

Guest

Gast
Kleine Korrektur (Konstanten statt int-Literale)
Code:
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());
 
G

Gast

Gast
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
 
G

Guest

Gast
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
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
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()).
 
R

rzimmer

Gast
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:

Code:
	 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
 
S

SlaterB

Gast
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?
 
G

Guest

Gast
Code:
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
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben