Fabian Steiner: Datum in JavaScript

HI!

Ich habe mir folgendes kleines Script programmiert, um die aktuelle Zeit auf meiner Homepage anzeigen zu lassen. Im IE fun funktionierts auch, aber im Mozilla erscheint statt dem Jahr 2004 einfach 104 und dadurch das der Mozilla es falsch anzeigt, muss der Fehler bei mir liegen ;-)

Hier das Skript:

<script language="javascript">
jetzt = new Date();
TagInWoche = jetzt.getDay();
Monat = jetzt.getMonth();
Jahr = jetzt.getYear();
TagDatum = jetzt.getDate();
var Wochentag = new Array("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
var Monatsname = new Array("Januar","Februar","März","April","Mai","Juni","Juli","August","September","Oktober","November","Dezember");
document.write(Wochentag[TagInWoche]+ ", " + TagDatum + ". " + Monatsname[Monat] + ", " + Jahr);
</script>

  1. Hallo,

    Ich habe mir folgendes kleines Script programmiert, um die aktuelle Zeit auf meiner Homepage anzeigen zu lassen. Im IE fun funktionierts auch, aber im Mozilla erscheint statt dem Jahr 2004 einfach 104 und dadurch das der Mozilla es falsch anzeigt, muss der Fehler bei mir liegen ;-)

    Hier das Skript:
    [...]
    Jahr = jetzt.getYear();

    getYear() gibt die seit 1900 vergangenen Jahre zurueck, also korrekt 104. Im IE ergibt diese Methode die aktuelle vierstellige Jahreszahl. Verwende getFullYear() und auch Mozilla zeigt 2004.

    MfG, Thomas

    --
    SVG - Learning By Coding
    http://svglbc.datenverdrahten.de/
    1. Hallo,

      Ich habe mir folgendes kleines Script programmiert, um die aktuelle Zeit auf meiner Homepage anzeigen zu lassen. Im IE fun funktionierts auch, aber im Mozilla erscheint statt dem Jahr 2004 einfach 104 und dadurch das der Mozilla es falsch anzeigt, muss der Fehler bei mir liegen ;-)

      Hier das Skript:
      [...]
      Jahr = jetzt.getYear();

      getYear() gibt die seit 1900 vergangenen Jahre zurueck, also korrekt 104. Im IE ergibt diese Methode die aktuelle vierstellige Jahreszahl. Verwende getFullYear() und auch Mozilla zeigt 2004.

      MfG, Thomas

      Vielen Dank!

      Und wiedereinmal der Beweis: Der IE ist zum wegschmeissen..

      1. Hallo,

        getYear() gibt die seit 1900 vergangenen Jahre zurueck, also korrekt 104. Im IE ergibt diese Methode die aktuelle vierstellige Jahreszahl. Verwende getFullYear() und auch Mozilla zeigt 2004.

        Und wiedereinmal der Beweis: Der IE ist zum wegschmeissen..

        Verzeihung, aber was erwartet ein Programmierer wohl von einer Methode, die sich getYear nennt? Eine Jahreszahl seit 1900 anno domini zu liefern, ist mindestens so willkürlich, wie eine Jahreszahl nach dem französischen Revolutionskalender zurückzugeben o.ä.

        Microsoft musste Netscapes JavaScript nicht eins zu eins implementieren, wenn es darin in einzelnen Punkten grobe konzeptionelle Fehler entdeckt. Und getYear war ein dummer Fehler. Der Fehler war nicht nur, dass zweistellige Jahreszahlen selten gebraucht werden. Die Regelung war in JavaScript/LiveScript 1.0 zunächst, dass vom AD-Jahr einfach 1900 subtrahiert werden (http://web.archive.org/web/19970801054156/home.netscape.com/eng/mozilla/2.0/handbook/javascript/ref_f-g.html#getYear_method). In JavaScript 1.1 sollten Daten ab 1999 nicht Jahreswerte über 99 liefern, sondern vierstellige Werte (http://wp.netscape.com/eng/mozilla/3.0/handbook/javascript/ref_f-g.htm#804). Schlussendlich ist man bei JavaScript 1.3 wieder zurück zur Javascript 1.0-Regelung (http://devedge.netscape.com/library/manuals/2000/javascript/1.3/reference/date.html#1194138), um getYear gleichzeitig als »deprecated« einzustufen und getFullYear aus dem ECMAScript-Standard einzuführen.

        Microsoft hat in MSIE 3 getYear gemäß JavaScript 1.0 implementiert und ist in MSIE 4 auf JavaScript 1.1 umgestiegen (und ist damit Netscape zum zweiten Mal gefolgt). Dann blieb Microsoft aber bis heute bei der Javascript 1.1-Regelung.

        Dass Mozilla hinsichtlich getYear an der alten JavaScript 1.0/1.3-Regelung klebt, ist mit Blick auf Kontinuität und Abwärtskompatibilität zwar klug und gewissermaßen notwendig. Dadurch wird die Regelung und deren Geschichte als solche aber trotzdem nicht besser. Und es stellt sich mir nicht so dar, als hätte Microsoft etwas falsch gemacht.

        Mathias