Jahreszahl
A. Nopper
- javascript
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
try
if (jahr < 1950)
{
jahr = jahr + 100;
}
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:
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
Problem: getFullYear() gibt es erst seit der Javascript-Version 1.3!
... wie jeder Nescafe3.0-Benutzer aus leidvoller Erfahrung zu berichten weiß. :-(
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