von Thomas Salvador.
JavaScript bietet das Objekt Date an, welches die Grundlage unserer Betrachtungen zu Datum und Zeit ist. Um das jeweils aktuelle Datum und die jeweils aktuelle Zeit zu erhalten, vereinbaren wir
<script type="text/javascript"> var now = new Date(); </script>
Dies schafft ein neues Date-Objekt und bindet es an die Variable now.
Date bietet Methoden, die zur Abfrage der einzelnen Teile dienen, dies sind u.a.
toString()
getDate()
getMonth()
getYear()
liefert das Jahr-1900, also die 19xx als zweistellige Jahreszahl, spätere Werte sind > 100, frühere < 0.
getFullYear()
getDay()
getHours();
getMinutes();
getSeconds();
Wenn Sie sich wundern, warum getYear()
eher komisch als Jahrezahl-1900 definiert ist, das war so nicht geplant.
Eigentlich sollte sie das Jahr liefern, zweistellig für 19xx und vierstellig für 2xxx. Also z.B. 97 für 1997 und 2002 für 2002.
Leider hatte sich sogar in einige verbreitete Browser bzw. Browserversionen ein Fehler eingeschlichen und sie waren nicht Jahr-2000 fest.
Welche das sind und mit welchem Workaround Sie diesen Bug fixen und Ihre Scripte auf allen Browsern lauffähig machen können, habe ich in Y2K-BugFix für JavaScript beschrieben.
Aus diesem Grunde wurde die Funktion getYear()
dann umdefiniert, dass sie Jahr-1900 als Ergebnis hat, und getFullYear()
eingeführt, die stets das vierstellige Jahr liefert.
Beispiel:
<script type="text/javascript"> <!-- var now = new Date(); document.write('now.toString() liefert ', now.toString(), '<br>'); document.write('now.getDate() liefert ', now.getDate(), '<br>'); document.write('now.getMonth() liefert ', now.getMonth(), '<br>'); document.write('now.getYear() liefert ', now.getYear(), '<br>'); document.write('now.getFullYear() liefert ', now.getFullYear(), '<br>'); document.write('now.getDay() liefert ', now.getDay(), '<br>'); document.write('now.getHours() liefert ', now.getHours(), '<br>'); document.write('now.getMinutes() liefert ', now.getMinutes(), '<br>'); document.write('now.getSeconds() liefert ', now.getSeconds(), '<br>'); // --> </script>
liefert
Beachten Sie hier bitte unbedingt die Ausgabe von getMonth()
.
Diese Methoden sind alles, was wir brauchen, um unsere Datumsausgaben zu formatieren.
Bei der Schaffung eines Objektes können Werte direkt gesetzt werden:
var test = new Date();
test = new Date(jahr, monat, tag);
monat
in der von getMonth()
gelieferten Fassung benutzt wird, d.h. mit Wertebereich 0..11 (also zum Beispiel 3 für April).var test = new Date(jahr, monat, tag, stunde, minute, sekunde);
Date
-Objekt kann auch die Uhrzeit tragen.Das jahr wird dabei so interpretiert, wie es setYear() tun würde. Ein zweistelliger Wert führt zu 1900+jahr, alles andere zu jahr selbst.
new Date(1999,1,1); // jahr 1999 new Date(99,1,1); // jahr 1999 new Date(101,1,1); // jahr 101 new Date(-1,1,1); // jahr -1
Das Date
-Objekt bietet noch einige andere Methoden an, die wir hier noch rasch betrachten wollen:
getTime()
getTimeZoneoffset()
parse(string)
liefert die Anzahl der Millisekunden, die zwischen dem 01.01.1970 00:00:00 und dem als Zeichenkette übergebenen Zeitpunkt vergangen sind. Die Darstellung in der Zeichenkette muss dem IETF-Standard folgen, d.h.
tageskürzel, tag monatskürzel jahr stunde:minute:sekunde zeitzone z.B. Wed, 9 Apr 1997 06:45:00 GMT+0100
toGMTString()
toLocaleString()
UTC(jahr, monat, tag)
UTC(jahr, monat, tag, stunde)
UTC(jahr, monat, tag, stunde, minute)
UTC(jahr, monat, tag, stunde, minute, sekunde)
stunde
, minute
bzw. sekunde
nicht angegeben, so werden sie als 0 angenommen. Damit meinen beispielsweise UTC(jahr, monat, tag)
und UTC(jahr, monat, tag, 0, 0, 0)
Gleiches.Schließlich (und damit kommen wir wirklich zum Ende der Einführung) können
einzelne Werte gesetzt werden, d.h. zu den (meisten) getXXX
gibt es ein entsprechendes setXXX
:
setDate(tag)
setMonth(monat)
setYear(jahr)
setFullYear(jahr)
setHours(stunde)
setMinutes(minute)
setSeconds(sekunde)
setTime(millisekunde)
millisekunde
Millisekunden nach dem 01.01.1970 00:00:00 liegt.Ich empfehle Ihnen die Verwendung von getFullYear() und setFullYear() für neue Skripte. Um die (besondere) Bedeutung der zweistelligen Werte bei Konstruktion zu umgehen, könnten Sie entweder mit einem Datumsstring arbeiten, oder direkt setFullYear() auf das erzeugte Objekt anwenden.