Max Giessler: Javascript: Date - Objekt fehlerhaft?

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

  1. 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.

    1. 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

  2. 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