A. Nopper: Jahreszahl

Hallo,
ich bin leider noch nicht so weit eingestiegen in die Materie des JavaScript. Nun habe ich bei meiner Arbeit folgendes Problem:
Die letzte Änderung meiner Seiten wird jetzt im Netscape als 07.Januar 1900 und im IE korrekt als 07. Januar 2000 dargestellt.
Dazu habe ich aus einem JavaScript-Buch die Funktion "getFullYear()"
verwendet.
(Übrigens empfohlen um Probleme mit Y2K zu umgehen.)
Könnte mir vielleicht jemand einen Tip bekommen, wie man es für beide Browser
richtig macht?

Das aktuelle Script lautet:
<script>
<!--
          var Datum = new Date(document.lastModified);
          var Monate = new        Array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
          document.write("Stand: " + Datum.getDate() + ". " + Monate[Datum.getMonth()] +" "+ Datum.getFullYear());
          //-->
</script>

Annett

  1. try

    if (jahr < 1950)
    {
    jahr = jahr + 100;
    }

  2. Hallo,

    mir ist leider auch nicht ganz klar, wo der Fehler liegt. Eines ist jedoch sicher: die Javascript-Dokumentation von Netscape besagt für die Javascript-Versionen bis einschließlich 1.2 folgendes:

    • getYear() liefert 2-stellige Jahreszahlen für 1900 bis 1999 (jeweils einschließlich)
    • getYear() liefert 4-stellige Jahreszahlen in allen anderen Fällen
      vgl. <http://developer.netscape.com/docs/manuals/communicator/jsref/core3.htm#1013157 >

    Inzwischen heißt es, daß getYear() generell die Jahreszahl - 1900 liefert und es wird empfohlen, statt getYear() die Funktion getFullYear() zu verwenden (vgl. http://devedge.netscape.com/docs/manuals/js/client/jsref/date.htm#1194138). Problem: getFullYear() gibt es erst seit der Javascript-Version 1.3!

    Offensichtlich hat MS die Spezifikation aufmerksamer gelesen und konsequent umgesetzt. Soviel zum Thema Abwärts-Kompatibilität und Browser-Unabhängigkeit...

    MfG Jörg

    Hallo,
    ich bin leider noch nicht so weit eingestiegen in die Materie des JavaScript. Nun habe ich bei meiner Arbeit folgendes Problem:
    Die letzte Änderung meiner Seiten wird jetzt im Netscape als 07.Januar 1900 und im IE korrekt als 07. Januar 2000 dargestellt.
    Dazu habe ich aus einem JavaScript-Buch die Funktion "getFullYear()"
    verwendet.
    (Übrigens empfohlen um Probleme mit Y2K zu umgehen.)
    Könnte mir vielleicht jemand einen Tip bekommen, wie man es für beide Browser
    richtig macht?

    Das aktuelle Script lautet:
    <script>
    <!--
              var Datum = new Date(document.lastModified);
              var Monate = new        Array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
              document.write("Stand: " + Datum.getDate() + ". " + Monate[Datum.getMonth()] +" "+ Datum.getFullYear());

    //-->
    </script>

    Annett

    1. Problem: getFullYear() gibt es erst seit der Javascript-Version 1.3!

      ... wie jeder Nescafe3.0-Benutzer aus leidvoller Erfahrung zu berichten weiß. :-(

  3. Hallo,
    meine Nachforschungen haben zusätzlich folgende Ergebnisse gebracht:

    document.lastModified liefert  - bei Anzeige mittels alert() -
    im IE 4 z.B.: 01/07/00 15:04:09
    im NS 4.7 z.B.: Friday, January 07, 2000 16:04:09

    Nach Konvertierung mittels new Date(document.lastModified)
    im IE 4: Sun Jan 7 15:04:29 UTC+0100 1900
    im NS 4.7: Fri Jan 07 16:04:29 GMT+100 (Westeuropäsiche Normalzeit) 2000

    Die eigentliche Fehlerursache ist also die fehlerhafte Konvertierung bei new Date(..)! Beachte insbesondere die abweichenden Angaben zum Tag!

    Lösungsskizze:
    Zunächst überprüfen, ob sich im Ergebnis von lastModified das Zeichen "/" befindet. Falls ja, wird das Script auf einem IE ausgeführt. Dann muß für den Fall, daß der Wert nach dem zweiten "/" kleiner als 70 ist, dieser als "2000 + wert" interpretiert werden. D.h. in den String muß nach dem zweiten "/" der String "20" eingefügt werden. Danach kann dieser String mittels new Date() korrekt konvertiert werden. Im obigen Beispiel wird "01/07/2000 15:04:09" korrekt umgewandelt.

    Falls Auswertungen mittels getYear() vorgenommen werden, muß bei Ergebnissen < 1900 zusätzlich 1900 addiert werden.

    Alles klar?

    Viel Erfolg
    Jörg

    Hallo,
    ich bin leider noch nicht so weit eingestiegen in die Materie des JavaScript. Nun habe ich bei meiner Arbeit folgendes Problem:
    Die letzte Änderung meiner Seiten wird jetzt im Netscape als 07.Januar 1900 und im IE korrekt als 07. Januar 2000 dargestellt.
    Dazu habe ich aus einem JavaScript-Buch die Funktion "getFullYear()"
    verwendet.
    (Übrigens empfohlen um Probleme mit Y2K zu umgehen.)
    Könnte mir vielleicht jemand einen Tip bekommen, wie man es für beide Browser
    richtig macht?

    Das aktuelle Script lautet:
    <script>
    <!--
              var Datum = new Date(document.lastModified);
              var Monate = new        Array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
              document.write("Stand: " + Datum.getDate() + ". " + Monate[Datum.getMonth()] +" "+ Datum.getFullYear());
              //-->
    </script>

    Annett