Jahr 100 = Jahr 0 oder wie?
Bernd Michna
- javascript
0 Andreas0 Frank S.0 Calocybe
Hallo Forumsgemeinde,
mich plagt schon die ganze Nacht ein Verständnisproblem:
bei
update = new Date(document.lastModified);
tag = update.getDate();
monat = update.getMonth() + 1;
jahr = update.getYear();
liefert der IE brav "2000" als Jahreszahl
der Nesi meint jedoch es wäre "0" (einstellig)
bei
datum = new Date();
tag = datum.getDate();
mon = datum.getMonth() + 1;
jahr = datum.getYear();
liefert der IE ebenfalls "2000"
beim Nesi ist es jedoch "100"
??? entsteht die Jahreszahl nicht aus "getYear" heraus oder wo bzw. wie "dichten sich die Browser ihre Interpretation zusammen, und warum der Nesi auf 2 Arten ???
Viele Grüße
Bernd
beim Nesi ist es jedoch "100"
??? entsteht die Jahreszahl nicht aus "getYear" heraus oder wo bzw. wie "dichten sich die Browser ihre Interpretation zusammen, und warum der Nesi auf 2 Arten ???
Hallo,
da Netscapes Javascript nicht y2k -fähig ist und die getYear-berechnung ab 1900 läuft ist es eigentlich verständlich, das 1900 + 100 =2000 ergibt und schon für die nächsten Jahre funktionieren wird.
mfg. Andreas
Hallo Andreas,
da Netscapes Javascript nicht y2k -fähig ist und die getYear-berechnung ab 1900 läuft ist es eigentlich verständlich, das 1900 + 100 =2000 ergibt und schon für die nächsten Jahre funktionieren wird.
das Rechenspiel ist mir schon klar, aber warum kommt einmal "100" und im anderen Fall "0"???
dann ist es halt mit einem einfachen + 100 auch nicht getan.
Viele Grüße
Bernd
Hallo Bernd,
das Rechenspiel ist mir schon klar, aber warum kommt einmal "100" und im anderen Fall "0"???
dann ist es halt mit einem einfachen + 100 auch nicht getan.
Es liegt eindeutig an document.lastModified in Verbindung mit dem Date-Objekt und getYear() liefert es nur einstellige Zahlen zurück. Erst im Jahr 2010 nicht mehr.
Dieser Bug betrifft übrigens auch den IE4. Der IE5 macht es dann wieder richtig.
Da hilf nur als workaround zu schreiben
if (jahr<10) jahr=jahr+2000
Viele Grüße
Antje
Hi!
da Netscapes Javascript nicht y2k -fähig ist und die getYear-berechnung ab 1900 läuft ist es eigentlich verständlich, das 1900 + 100 =2000 ergibt und schon für die nächsten Jahre funktionieren wird.
Schwachsinn! Selbstverstaendlich ist der Navigator Y2k-faehig, spaetestens seit JS-Version 1.3 (kam mit Navigator 4.06). Nur der IE isses nicht, der liefert bei getYear naemlich fuer Jahre < 2000 eine zweistellige Zahl und fuer Jahre >= 2000 eine vierstellige Zahl. Das ist natuerlich Bockmist, weil man nie genau weiss, was man denn bekommen wird. Man muss allerdings zugeben, dass aeltere Netscape-Browser diesen Quatsch auch gemacht haben, von daher hat der IE das ja wahrscheinlich.
Calocybe
Hallo Bernd!
Das Thema wurde schon vor einiger Zeit hier diskutiert. Du findest die Antworten im Archiv: http://www.teamone.de/cgi-local/sfasuch.pl?suchausdruck=getfullyear&feld=alle&hits=alle
Gruß Frank
Hallo Bernd!
Du hast hier zwei Probleme auf einmal, naemlich 1. ein typisches Y2k-Problem und 2. einen Webserver, der das lastModified-Datum nicht mit uebertraegt.
Zu 1. ein paar Lesetips:
http://developer.netscape.com/docs/manuals/js/client/jsref/date.htm#1194138
<../../sfarchiv/1999_4/t07655.htm#a38387>
<../../sfarchiv/2000_1/t10412.htm#a52481>
Zu 2. ebenfalls ein paar Verweise:
http://developer.netscape.com/docs/manuals/js/client/jsref/document.htm#1193811
<../../sfarchiv/1999_3/t06406.htm#a31206>
<../../sfarchiv/1999_4/t08319.htm#a41875>
Der Grund, warum fuer manche URLs kein Last-Modified-Header uebertragen wird, ist uebrigens dass der Server es nicht weiss. Es handelt sich dabei meistens um SSI-Dateien oder CGI-Scripts, und deren wiedergegebener Inhalt aendert sich ja praktisch mit jedem Aufruf.
So long
Hallo Roland,
Diesmal warst du etwas vorschnell. Dieses Problem lag tatsächlich nicht vor.
Der Aufruf
Datum=new Date(document.lastModified);
Jahr=Datum.getYear();
alert(Jahr)
liefert im IE4 und dem Navigator (auch die 3) zumindest unter windows zwischen 2000 und 2010 nur einstellige Werte.
Dagegen liefert
Heute=new Date();
Jahr=Heute.getYear();
alert(Jahr)
im IE 2000 und im Navigator 100 (ab der 4)
Bernd störte vor allem, daß eine 0 und keine 100 zurückgeliefert wurde.
Viele Grüße
Antje
PS: Habe ich dich auch mal erwischt. ;-)
Hi Antje!
Diesmal warst du etwas vorschnell. Dieses Problem lag tatsächlich nicht vor.
Der Aufruf
Datum=new Date(document.lastModified);
Jahr=Datum.getYear();
alert(Jahr)liefert im IE4 und dem Navigator (auch die 3) zumindest unter windows zwischen 2000 und 2010 nur einstellige Werte.
*probier* *tatsaechlich*
<javascript:alert(document.lastModified)>
<javascript:alert((new Date(document.lastModified)).toString())>
Da scheint mir ja jemand doch noch ein Jahr2000-Problem zu haben! Bei mir sieht der erste String naemlich so aus: 01/21/00 19:13:22 (Browser: Netscape 4.08 en WinNT)
Das interpretiert Date.parse() dann leider als das, was beim 2. Link erscheint, naemlich
Sun Jan 21 1900 19:13:22 GMT+0100
Tja, da wird die 00 einfach zur 1900, wodurch die 0 von getYear() die logische Folge ist.
Leider hab ich jetzt keine Zeit, noch weiter ueber eine Problemloesung nachzudenken. Aber dass das ausgerechnet meinem Liblingsbrowser passiert, ist natuerlich bedenklich. ;-(
PS: Habe ich dich auch mal erwischt. ;-)
Na endlich! ;-)
Bei Netscape 4.7 passiert das natuerlich nicht...
Bio