5.3 Mit Daten rechnen  
In JavaScript Version 1.0 wurden Datumswerte intern als die Anzahl der seit dem 1. Januar 1970 verstrichenen Millisekunden gespeichert. Diese auf den ersten Blick merkwürdig anmutende Vorgehensweise bietet einen großen Vorteil: Dadurch werden Rechenoperationen ermöglicht, die ansonsten nur sehr schwer und kompliziert zu implementieren gewesen wären.
Die Hauptanwendung ist hier die Berechnung der Differenz zweier Datumswerte. Wie viele Tage oder Stunden dauert es noch bis zum 1. 1. 2008? Wie viele Tage bin ich alt? Um wie viele Stunden ist mein Bruder/meine Schwester/mein Hund älter bzw. jünger?
Sie nutzen dazu die Methode getTime() und ganz wenig Mathematik. Die Methode getTime() gibt die Zeit in der Datumsvariablen im Format »Millisekunden seit dem 1. 1. 1970« zurück. Wenn zwei Datumsvariablen vorliegen, deren zeitliche Differenz berechnet werden muss, so kann der Millisekundenwert beider Variablen voneinander abgezogen werden, und man hat das Ergebnis. Dieses liegt dann zwar in Millisekunden vor, aber die Umrechnung in handlichere Werte ist recht einfach. Eine Division durch 1000 ergibt Sekunden (eine Sekunde dauert 1000 Millisekunden); durch 1000 × 60 ergibt die Minuten (analog: 60 Sekunden sind eine Minute) und so fort. Die Division durch 1000 × 60 × 60 × 24 gibt die Zeit in Tagen an.
Noch wissen Sie nicht, wie man Benutzereingaben mit JavaScript abfängt; aus diesem Grund muss im folgenden Beispiel zum Testen an einer Variablen »herumgeschraubt« werden. Das Beispiel mit den Geburtsdaten ist heikel, wenn man vor dem 1. Januar 1970 geboren ist (aus Gründen der Abwärtskompatibilität), daher berechnen wir nun die zeitliche Differenz des Datums der Wiedervereinigung zum letzten »echten« Jahrtausendwechsel, also dem 1. 1. 2001:
<html>
<head>
<title>Jahrtausendwechsel</title>
<script type="text/javascript"><!--
var d = new Date(89, 9, 3); //3.10.1989
var d2 = new Date(2001, 0, 1); //1.1.2001
function differenz() {
var dtime = d.getTime();
var d2time = d2.getTime();
var diff = d2time – dtime;
var diffstring = (diff/1000) + " Sekunden";
diffstring += " oder " + (diff/(1000*60)) +
" Minuten";
diffstring += " oder " + (diff/(1000*60*60)) +
" Stunden";
diffstring += " oder " + (diff/(1000*60*60*24)) +
" Tage";
document.write("Zeitunterschied: " + diffstring);
}
//--></script>
</head>
<body>
<h1>Zeitunterschied</h1>
<script type="text/javascript"><!--
differenz();
//--></script>
</body>
</html>
 Hier klicken, um das Bild zu Vergrößern
Abbildung 5.1 Mit Daten rechnen: Ein Zeitunterschied
|