Javascript: Date - Objekt fehlerhaft?
Max Giessler
- javascript
Hi,
ich habe in einer unserer Web-Anwendungen oftmals das Date Objekt benutzt und in der letzten Woche jede Menge Beschwerden wegen Fehlern bekommen, obwohl die Anwendung (Reiskostenabrechnung) schon seit einem Jahr eigentlich fehlerlos läuft.
Ich habe das Problem ein wenig komprimiert. Testet einfach mal den folgenden Code:
<html>
<head>
</head>
<body>
<script language="JavaScript">
Test1 = new Date( 2002, 10, 30 );
Test2 = new Date( 2002, 10, 31 );
Test3 = new Date( 2002, 11, 01 );
alert( Test1.getDate() + " ." + Test1.getMonth() + "." + Test1.getFullYear() );
alert( Test2.getDate() + " ." + Test2.getMonth() + "." + Test2.getFullYear() );
alert( Test3.getDate() + " ." + Test3.getMonth() + "." + Test3.getFullYear() );
</script>
</body>
</html>
Ich hoffe, ich bin nicht der einzige, bei dem Test2 auf einmal in den 1. November 2002 umgewandelt wird. Ein Bug würde ich sagen, oder? Hat jemand eine Antwort oder vielleicht sogar ein Bugfix?
Zur Info: benutze Win 2000 Pro, IE 6.0 SP1
Gruß,
Max
Hallo Max,
ich habe in einer unserer Web-Anwendungen oftmals das Date Objekt benutzt und in der letzten Woche jede Menge Beschwerden wegen Fehlern bekommen, obwohl die Anwendung (Reiskostenabrechnung) schon seit einem Jahr eigentlich fehlerlos läuft.
Ich habe das Problem ein wenig komprimiert. Testet einfach mal den folgenden Code:
<html>
<head>
</head>
<body>
<script language="JavaScript">
Test1 = new Date( 2002, 10, 30 );
Test2 = new Date( 2002, 10, 31 );
Test3 = new Date( 2002, 11, 01 );alert( Test1.getDate() + " ." + Test1.getMonth() + "." + Test1.getFullYear() );
alert( Test2.getDate() + " ." + Test2.getMonth() + "." + Test2.getFullYear() );
alert( Test3.getDate() + " ." + Test3.getMonth() + "." + Test3.getFullYear() );
</script>
</body>
</html>Ich hoffe, ich bin nicht der einzige, bei dem Test2 auf einmal in den 1. November 2002 umgewandelt wird. Ein Bug würde ich sagen, oder? Hat jemand eine Antwort oder vielleicht sogar ein Bugfix?
Nö, das ist üblich. Die Range für Month geht bei JavaScript von 0 bis 11, wobei der Monat 0 der Januar ist und der Monat 11 der Dezember ist. Und das ganze ist kein Bug, sondern eine konsequente Verfolgung des Sprachkonzepts. Wenn Du unter http://selfhtml.teamone.de/javascript/objekte/date.htm#allgemeines nachschaust, dann wirst Du dieses Verhalten auch dokumentiert finden.
Bis denndann
Michael N.
oje, und das, wo ich zehn zeilen tiefer ein switch-case von 0 - 11 programmiert habe. Danke Euch beiden. Manchmal braucht man einfach einen Augenöffner ;-)
Max
Hi,
Ich habe das Problem ein wenig komprimiert. Testet einfach mal den folgenden Code:
<html>
<head>
</head>
<body>
<script language="JavaScript">
Test1 = new Date( 2002, 10, 30 );
30. November
Test2 = new Date( 2002, 10, 31 );
31. November, gibt es nicht, also 1. Dezember
Test3 = new Date( 2002, 11, 01 );
1. Dezember
Die Werte sind korrekt, Deine Interpretation ist falsch.
Die Monate werden von 0 bis 11 durchgezählt, nicht 1 bis 12
cu,
Andreas