Homepagebau
Dateiversion:
diesen Beitrag diskutieren,
ergänzen, eine Frage stellen

Datum- und Zeitangaben - das "Date"-Objekt

Schwierigkeit: für Fortgeschrittene

 

Beispiel-Skript(e) für eine Java-Script-Uhr:


Beschreibung:

Das Date-Objekt erweitert die Zahl der primitiven Datentypen in JavaScript um einen zusätzlichen - nämlich Date. Dieser kann Datums- und Zeitangaben enthalten. Außerdem bietet das Objekt "Date" die Möglichkeit, das aktuelle Datum, die Zeit und andere Angaben, wie die aktuelle Zeitzone, etc. auszulesen.

Date ist wie gesagt ein Objekt, dass mit dem Konstruktor "new" aufgerufen wird. "new Date()" erzeugt somit ein Objekt vom Typ "Date", dass die aktuelle Uhrzeit, Datum etc. enthält.


Bekannte Fehler:
Im Netscape Navigator und unter Opera gibt es einen nicht beseitigten Jahr-2000-Bug.
Als Jahreszahl geben beide Browser nicht "2002" sondern "102" an.
Der Fehler wird durch das oben angegebene Skript korrigiert.

Beispiel:

Betrachten wir einige ausgewählte Beispiele...  

var date= new Date();

erzeugt ein Objekt mit dem aktuellen Zeitstempel

time= date.getHours() +":"+ date.getMinutes();

liefert z.Bsp. 17:30

time= date.getHours() +":"+ date.getMinutes() +"."+ date.getSeconds();

liefert z.Bsp. 17:30:20

time= date.getDate() +"."+ ( date.getMonth()+1) +"."+ date.getYear();

liefert z.Bsp. 18.6.2001

Leider liefert getMonth() für Januar den Wert 0. Demzufolge repräsentiert der Wert 1 den Monat Februar. Daher müssen wir auch 1 addieren, um auf das korrekte Ergebnis zu kommen. Es bleibt anzumerken, dass die Rückgabewerte aller Funktionen des Date-Objekts Integerwerte, also ganze Zahlen ohne führende Nullen, sind.

Die Funktion getDay() liefert den Wochentag ebenfalls als Zahl zurück. Daher müssen wir diese Zahl zunächst in einen Text umwandeln.

var daynr = date.getDay()
if      (daynr == 0) var day = "Sonntag";
else if (daynr == 1) var day = "Montag";
else if (daynr == 2) var day = "Dienstag";
else if (
daynr == 3) var day = "Mittwoch";
else if (
daynr == 4) var day = "Donnerstag";
else if (daynr == 5) var day = "Freitag";
else if (daynr == 6) var day = "Samstag";

jetzt können wir den Wochentag einfügen...

time="heute ist "+day+" der "+
(date.getDate())+"."+(date.getMonth()+1)+"."+(date.getYear());

liefert z.Bsp.: heute ist Mittwoch der 18.6.2001

Dies können sie in Verbindung mit einer setTimeOut() Methode zum Beispiel benutzen, um in einem Formularfeld die aktuelle Uhrzeit anzuzeigen...

Zum Vergleich - hier das Ergebnis:

Quelltext: (etwas vereinfacht)

<body>
<p>

  <!-- Hier folgt das Formularfeld für unsere Uhr -->
    <form name="clock">
    <input name="time" readonly type="text" size="5">
    </form>
  <!-- Ende des Formulars -->

</p>

  <script language="JavaScript">
  <!--
  function myClock()
  {
    clock.time.value= (new Date()).getHours() + ":" + (new Date()).getMinutes();
    timer = setTimeout("myClock()", 5000);
  }

  myClock();
  //-->
  </script>

</body>

 

weitere Funktionen ...

Eine Auflistung der wichtigsten Methoden des Date-Objekts:

getDay() liefert den Wochentag als Zahl: 0 = Sonntag, 1 = Montag, ...
getDate() liefert den Tag des Monats: 1. - 31.
setDate(tag) setzt den Wert (innerhalb des Objekts) 
getMonth() liefert den Monat als Zahl: 0 = Januar, 1 = Februar, ...
setMonth(monat) setzt den Wert (innerhalb des Objekts) 
getYear() liefert das Jahr
setYear(jahr) setzt den Wert (innerhalb des Objekts) 
getHours() liefert die Stunde: 0 - 23
setHours(stunden) setzt den Wert (innerhalb des Objekts) 
getMinutes() liefert die Minuten: 0 - 59
setMinutes(minuten) setzt den Wert (innerhalb des Objekts) 
getSeconds() liefert die Sekunden der aktuellen Uhrzeit: 0 - 59
setSeconds(sekunden) setzt den Wert (innerhalb des Objekts) 
getTime() wandelt ein Date-Objekt in einen Unix-Zeitkode (UTC) um (das ist die Anzahl der Millisek. seit dem 1.1.1970)
getTimezoneOffset() liefert die aktuelle Zeitzone

standardisierte Zeitangaben:

Ein Unix-Zeitkode (UTC) ist eine ganze Zahl, welche die Anzahl der verstrichenen Millisekunden seit dem 1. Januar 1970 00:00 angibt. Diese Zahl können sie zum Beispiel verwenden, um Zeitangaben zu vergleichen, Datumsangaben chronologisch zu sortieren, oder Zeitangaben zwischen verschiedenen Skript- oder Programmiersprachen auszutauschen.

Sie können einen Unix-Zeitkode in ein Date-Objekt umwandeln, indem sie den Konstruktor "new Date(utc)" mit dem UTC als Argument aufrufen.

Date.parse() wandelt eine Zeitangabe (IETF-Standard) in einen Unix-Zeitkode um. Eine Zeitangabe im IETF-Format können sie mit der Methode toGMTString() des Date-Objekts erzeugen.
Date.UTC(jahr, monat, tag, h, m, s) wandelt ein Datum in einen Unix-Zeitkode um