Wochentag und Jahrtag werden nicht korrekt ermittelt

  • Themenstarter Themenstarter Guest
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
G

Guest

Gast
Hallo,

bei mir wird irgendwie der Wochentag und Jahrtag werden nicht korrekt ermittelt?!...

Code:
				  GregorianCalendar von_date = new GregorianCalendar(2008,9,1);
				  von_date.setTimeZone(TimeZone.getTimeZone("ECT"));

                        System.out.println(von_date);
		    	System.out.println("Ära: "+von_date.get(Calendar.ERA));
		    	System.out.println("Date: "+von_date.get(Calendar.DATE));
		    	System.out.println("Monat: "+von_date.get(Calendar.MONTH));
		    	System.out.println("Jahr: "+von_date.get(Calendar.YEAR));		    	
		    	System.out.println("Day of week: "+von_date.get(Calendar.DAY_OF_WEEK));
		    	System.out.println("DAY_OF_MONTH: "+von_date.get(Calendar.DAY_OF_MONTH));
		    	System.out.println("DAY_OF_YEAR: "+von_date.get(Calendar.DAY_OF_YEAR));

Die Ausgabe schaut dann so aus:
java.util.GregorianCalendar[time=1222812000000,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="ECT",offset=3600000,dstSavings=3600000,useDaylight=true,transitions=184,lastRule=java.util.SimpleTimeZone[id=ECT,offset=3600000,dstSavings=3600000,useDaylight=true,startYear=0,startMode=2,startMonth=2,startDay=-1,startDayOfWeek=1,startTime=3600000,startTimeMode=2,endMode=2,endMonth=9,endDay=-1,endDayOfWeek=1,endTime=3600000,endTimeMode=2]],firstDayOfWeek=2,minimalDaysInFirstWeek=4,ERA=1,YEAR=2008,MONTH=9,WEEK_OF_YEAR=40,WEEK_OF_MONTH=1,DAY_OF_MONTH=1,DAY_OF_YEAR=275,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=1,AM_PM=0,HOUR=0,HOUR_OF_DAY=0,MINUTE=0,SECOND=0,MILLISECOND=0,ZONE_OFFSET=3600000,DST_OFFSET=3600000]
Ära: 1
Date: 1
Monat: 9
Jahr: 2008
Day of week: 4
DAY_OF_MONTH: 1
DAY_OF_YEAR: 275

Also das Datum stimmt ja (01.09.2008) aber das ist doch heuer in Montag, also muesste DAY_OF_WEEK gleich eins sein und asserdem der DAY_OF_YEAR 248 und nicht 275.... DAY_OF_MONTH stimmt wieder...:-((

hilfe!...danke
christoph
 
Aus der Dokumentation des Konstruktors:
Month value is 0-based. e.g., 0 for January.
Du bist also beim 1.8.2008.
 
ahhhh....Monat 0-basiert...das ist ja eine sch.....

bin also beim 1.10.2008 (net 01.08.2008) dann stimmt auch der Jahrtag)...
das ist aber ein Mittwoch => fängt in Java die Woche also auch noch am Sonntag an....
a draum...
ich will mein delphi wieder haben...;-)


danke vielmals
christoph
 
Anonymous hat gesagt.:
ahhhh....Monat 0-basiert...das ist ja eine sch.....
Nö, gar nicht. So kannst Du z.B. ein Array {"Januar", "Februar", "März", ...} ganz einfach indizieren.

Anonymous hat gesagt.:
fängt in Java die Woche also auch noch am Sonntag an....
Java kommt aus den USA, da ist das nicht verwunderlich. Schau mal bei Wikipedia nach:
Nach jüdischer und christlicher Tradition beginnt die Woche mit dem Sonntag. Genauso handhaben es auch heute noch die USA. In arabischen Ländern beginnt die Woche am Samstag. In den meisten europäischen Ländern beginnt die Woche, wie im ISO 8601-Standard vorgesehen, mit dem Montag als Tag 1.
 
> In den meisten europäischen Ländern beginnt die Woche, wie im ISO 8601-Standard vorgesehen, mit dem Montag als Tag 1.

was den Java-USA ja nichtmal wiedersprechen muss,
Sonntag ist dann eben 0 😉
 
Bzw. noch ein Nachtrag: Vieles, was laenderspezifisch unterschiedlich sein kann, kann durch ein Locale spezifiziert werden. Das geht auch beim Calendar. Wenn man das nicht angibt, wird es systemspezifisch. Wird Locale.GERMANY verwendet, startet die Woche auch mit dem Montag.
 
SchonWiederFred hat gesagt.:
Nach jüdischer und christlicher Tradition beginnt die Woche mit dem Sonntag. Genauso handhaben es auch heute noch die USA. In arabischen Ländern beginnt die Woche am Samstag. In den meisten europäischen Ländern beginnt die Woche, wie im ISO 8601-Standard vorgesehen, mit dem Montag als Tag 1.

Ach deswegen! :shock:

Wieder was dazugelernt. 😎
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben