Jahreszahlen-Problem bei JavaScript
Michael
Hallo,
bei meiner Arbeit mit Java-Script bin ich auf ein interessantes Verhalten des Date-Objektes gestossen.
getYear() liefert eine zweistellige Jahreszahl zurück. Bei setYear() arbeitet auch mit zweistelligen Jahreszahlen. (IIIIGGGGIIIITTTT!!!!!!!!).
Wenn man nun Jahreszahlen zwischen 70 und 99 reinleitet, erhält man ein Jahr zwischen 1970 und 1999 (noch kein Problem!), wenn man Jahreszahlen zwischen 00 und 37 reinleitet, erhält man ein Jahr zwischen 2000 und 2037 (immerhin etwas), wenn man nun aber eine Jahreszahl zwischen 38 und 69 oder über 100 reinleitet, erhält man das Jahr 1970.
Ist in der nächsten Zeit da irgendeine Besserung zu erwarten?
Michael
bei meiner Arbeit mit Java-Script bin ich auf ein interessantes Verhalten des Date-Objektes gestossen.
getYear() liefert eine zweistellige Jahreszahl zurück.
Nicht ganz, nur bis zum Jahr 2000, dann werden es vier.
Bei setYear() arbeitet auch mit zweistelligen Jahreszahlen. (IIIIGGGGIIIITTTT!!!!!!!!).
setYear(yearValue)
Parameters
yearValue An integer.
Description
If yearValue is a number between 0 and 99 (inclusive), then the year for
dateObjectName is set to 1900 + yearValue.
Otherwise, the year for dateObjectName is set to yearValue.
Wenn man nun Jahreszahlen zwischen 70 und 99 reinleitet, ...
Was heisst reinleiten?
Meinst Du setYear() oder new Date()
Der bessere Weg, um ein Datum zu defnieren: new Date()
Und weil ich gerade beim Zitieren bin, vielleicht ganz interessant:
The way JavaScript handles dates is very similar to the way Java handles dates:
both languages have many of the same date methods, and both store dates
internally as the number of milliseconds since January 1, 1970 00:00:00. Dates
prior to 1970 are not allowed.
BTW: 1970 ist ein "magisches Datum", triffst Du immer mal wieder an, ganz unabhaegig von JavaScript, Java etc. (Universal Coordinated Time)
Ist in der nächsten Zeit da irgendeine Besserung zu erwarten?
Warum?
Christine
Hi,
Und weil ich gerade beim Zitieren bin, vielleicht ganz interessant:
The way JavaScript handles dates is very similar to the way Java handles dates:
both languages have many of the same date methods, and both store dates
internally as the number of milliseconds since January 1, 1970 00:00:00. Dates
prior to 1970 are not allowed.BTW: 1970 ist ein "magisches Datum", triffst Du immer mal wieder an, ganz unabhaegig von JavaScript, Java etc. (Universal Coordinated Time)
da will ich noch mal kurz ergänzen, warum die Zeit gerade bis ins Jahr 2037 läuft. Beispielsweise auf Linux-Rechnern wird die Zeit in Sekunden seit dem 1.1.1970 gerechnet. Codiert wird sie mit 32 Bit, wobei ein Bit als Vorzeichen dient (um auch frühere Daten erfassen zu können). Bleiben also 31 Bit bzw. 2 hoch 31 = 2.147.483.648 Sekunden, die die Zeit "laufen" kann - und das endet im Jahre 2037!
Die Erklärung ist vielleicht nicht JavaScript-bezogen, aber auf jeden Fall recht interessant :-)
Cheatah
Hallo !!!
BTW: 1970 ist ein "magisches Datum", triffst Du immer mal wieder an, ganz unabhaegig von JavaScript, Java etc. (Universal Coordinated Time)
Beispielsweise auf Linux-Rechnern wird die Zeit in Sekunden seit dem 1.1.1970 gerechnet.
Was hat es mit diesem Datum in sich? Warum ist es ein "magisches" Datum? Bin ich für den Computer denn gar nicht geboren??? No identity??? Gar nicht existent??? :-((((
Bis danndann
PAF (patrickausfrankfurt)
P.S. in eigener Sache:
Wie oben an der email-Adresse und an der URL zu sehen ziehe ich um.... Eigene Domain... Leider scheint der Server nicht unbedingt schneller zu sein als fortunecity.com, wo Backfire (http://www.surf.to/Backfire) mir bisher etwas Platz zur Vefügung stellte...
Hi,
Was hat es mit diesem Datum in sich? Warum ist es ein "magisches" Datum? Bin ich für den Computer denn gar nicht geboren??? No identity??? Gar nicht existent??? :-((((
Du existierst dann als negative Zahl ;-) Allerdings nur, wenn Du frühestens im Jahre 1913 geboren wurdest!
Das Datum wurde glaube ich gesetzt, weil vor dem Jahre 70 Computer in der Form, daß es nötig war, Daten zu bestimmen, noch nicht existierten. Das exakte Datum (1.1.70) wurde dann gewählt, weil es leicht zu merken ist. Irrtümer vorbehalten, und ich lasse mich auch gerne eines besseren belehren :-)
Cheatah