java.util.GregorianCalendar.MONTH liefert August ?!?
Tobias
- java
0 Daniel Thoma0 Tobias0 Tobias0 Henryk Plötz- menschelei
0 MudGuard
Hi!
Habe in meiner Applikation folgende Verwendung für einen Kalender:
private int getAktuellesMonat() {
int monat = 0;
java.util.Calendar rightNow = java.util.GregorianCalendar.getInstance();
monat = rightNow.get(java.util.GregorianCalendar.MONTH);
System.out.println(monat);return monat;
}
Das Problem hierbei: das system.out produziert 8
Obwohl doch eigtl schon September ist ;-)
Das Windows-Datum hab ich mit Doppelklick rechts unten nachgeprüft - dort ist es September.
Gibt's noch eine andere interne Uhrzeit, wo sich java den aktuellen Monat usw. herholt? Oder steckt ein anderer Fehler dahinter? Wie kann man diese "interne Uhrzeit" umstellen? Tag, Jahr und Uhrzeit passt übrigens. Nur das verflixte eine Monat...?!
Thx & cu, Tobias
Hallo Tobias,
Monate werden mit Null beginnent nummeriert. Siehe auch http://java.sun.com/j2se/1.5.0/docs/api/java/util/Calendar.html#MONTH
Grüße
Daniel
Danke...
war wohl ein Anfängerfehler meinerseits :-)
sorry, gleich noch ein Problem:
private String getAktuellenWochentag() {
String wochentag = "";
int tagnummer = 0;
java.util.Calendar rightNow = java.util.GregorianCalendar.getInstance();
System.out.println(rightNow);
tagnummer = rightNow.get(java.util.GregorianCalendar.DAY_OF_WEEK);
switch (tagnummer){
case java.util.Calendar.MONDAY: wochentag = "Mo";
case java.util.Calendar.TUESDAY: wochentag = "Di";
case java.util.Calendar.WEDNESDAY: wochentag = "Mi";
case java.util.Calendar.THURSDAY: wochentag = "Do";
case java.util.Calendar.FRIDAY: wochentag = "Fr";
case java.util.Calendar.SATURDAY: wochentag = "Sa";
case java.util.Calendar.SUNDAY: wochentag = "So";
}
return wochentag;
}
Liefert mir für heute "So" ... das entspricht auch dem 15. vom August. Da steht aber in der API nix dabei dass da irgendwas "komisch" läuft...!
Hab ich Tomaten auf den Augen? Sieht jemand meinen Fehler?
Danke, Tobias
Hallo Tobias,
Bei einem switch-Statement wird zur entsprechenden case-Marke gesprungen und ab da aller Code ausgeführt.
Wenn Du das nicht willst, musst Du den switch-Block mit break verlassen:
switch (tagnummer){
case java.util.Calendar.MONDAY: wochentag = "Mo"; break;
case java.util.Calendar.TUESDAY: wochentag = "Di"; break;
case java.util.Calendar.WEDNESDAY: wochentag = "Mi"; break;
case java.util.Calendar.THURSDAY: wochentag = "Do"; break;
case java.util.Calendar.FRIDAY: wochentag = "Fr"; break;
case java.util.Calendar.SATURDAY: wochentag = "Sa"; break;
case java.util.Calendar.SUNDAY: wochentag = "So";
}
Grüße
Daniel
Moin,
Monate werden mit Null beginnent nummeriert. Siehe auch http://java.sun.com/j2se/1.5.0/docs/api/java/util/Calendar.html#MONTH
Und da weder Tag noch Jahr bei Null beginnend gezählt werden muß dieser Teil der API einfach unter dem Einfluß von wirklich schlechtem Gras entstanden sein, wenn ihr mich fragt.
Hi,
Monate werden mit Null beginnent nummeriert. Siehe auch http://java.sun.com/j2se/1.5.0/docs/api/java/util/Calendar.html#MONTH
Und da weder Tag noch Jahr bei Null beginnend gezählt werden muß dieser Teil der API einfach unter dem Einfluß von wirklich schlechtem Gras entstanden sein, wenn ihr mich fragt.
Naja, Monat und Wochentag werden häufig als Indizes in Arrays mit den Namen benutzt ==> 0-basierte Zählung scheint effektiver.
Für die Jahreszahl oder den Tag innerhalb des Monats wird jedoch die Zahl direkt verwendet.
Ist auch bei anderen Sprachen so (Javascript z.B.)
cu,
Andreas