Ein Datum mit Javascript

Javascript bietet das Date-Objekt an, um mit einem Datum arbeiten zu können. Wir können leicht ein solches Objekt erstellen:

var myDate1 = new Date(2011, 12, 13, 21, 30, 00);
var myDate2 = new Date(2011, 12, 13);

Das Objekt selbst bietet Funktionen an, um Eigenschaften des Objekts auszulesen oder zu manipulieren:

  • getDate() liefert den Monatstag
  • getDay() liefert den Wochentag
  • getMonth() liefert den Monat
  • getFullYear() liefert das Jahr (vierstellig)
  • getHours() liefert die Stunden der Uhrzeit
  • getMinutes() liefert die Minuten der Uhrzeit

Eine vollständige Liste findet sich z. B. auf der SELFHTML Referenz. Nun möchte man vielleicht mit einem Datum rechnen oder Vergleiche anstellen, eine Benutzereingabe validieren oder ähnliches. Dazu müssen wir in der Regel noch einiges „drumherum“ programmieren. Unterstützung kann hier eine Datumsbibiothek bringen.

Datejs

Datejs

Datejs - An Open Source JavaScript Date Library

Das Projekt ist schon älter und das letzte „offizielle“ Release wurde 2007 veröffentlicht. Auf der Projektseite wurde die Bibliothek weiter über 1.000.000 mal heruntergeladen. Datejs erweitert das Date-Objekt selbst, d. h. es stehen zusätzliche Funktionen zur Verfügung. Nachfolgend ein kleiner Auszug:

  • Date.today() liefert das aktuelle Datum.
  • Date.today().next().friday() liefert das Datum des nächsten Freitags
  • Date.last().week() liefert das Datum vor einer Woche
  • Date.today().addDays(n) addiert n Tage zu dem aktuellen Datum.

Mehr Beispiele finden sich der Projektseite.

Außerdem kann man das Datumsobjekt auch komfortabel setzen:

var time = {hour:18, minute:15};
Date.today().at(time); // heute um 18:15 Uhr

var mydate = {month: 1, day: 20, hour: 20, minute: 30};
Date.today().set(mydate); // aktuelles Jahr, 20. Januar um 20:30 Uhr

Die Bibliothek bietet noch viel mehr Funktionen z. B. für das Parsen von Strings oder für Datumsvergleiche. Wenn wir beispielsweise ein Anfangs- und Enddatum haben und prüfen wollen, ob ein bestimmtes Datum innerhalb dieser Zeitspanne liegt, so kann das mit folgender Zeile geprüft werden:

Date.today().between(startDate, endDate) // true|false

Eine Lokalisierung von Ausgaben ist möglich. Es gibt bereits fertige Spracherweiterungen

<!-- de-DE (deutsch) -->
<script type="text/javascript" src="date-de-DE.js"></script>

Moment.js

Eine weitere, relative junge „Date Library“ ist Moment.js. Anstatt das Date-Objekt zu erweitern, wird hier mit einem Wrapper gearbeitet.

var mydate = moment(new Date(2011, 12, 13));

Mit diesem Objekt kann ähnlich wie unter Datejs gearbeitet werden:

mydate.add('days', 11); // addiert 11 Tage
mydate.subtract('months', 1); // ein Monat zurück
mydate.year(2012); // setzt das Jahr auf 2012

Eine Differenz kann folgendermaßen berechnet werden:

var a = moment([2011, 12, 24]);
var b = moment([2011, 12, 25]);
a.diff(b);

Ab und zu braucht man vielleicht auch wieder das Date-Objekt:

mydate.native();

In der Dokumentation habe ich leider keinen Hinweis gefunden, um zu prüfen, ob ein Datum zwischen zwei Zeiträumen liegt. Vom Umfang her ist diese Bibliothek natürlich schön schlank. Eine Lokalisierung ist auch möglich.

Ein Gedanke zu “Ein Datum mit Javascript

Kommentar verfassen