Natürlichsprachliche Darstellung des Datums mit JavaScript

von Thomas Salvador.

In der vorherigen Ausgabe wurden die Routinen vorgestellt, die JavaScript bereitstellt, um mit Daten und Zeiten umzugehen.

Hier wollen wir eine Routine schaffen, die eine Darstellung wie etwa "Heute ist Sonntag, der 12. Oktober 1997" erlaubt.

Sie ahnen es bereits: mit JavaScript ist das wirklich kein Problem, denn mit den Methoden getMonth() bzw. getDay() stellt JavaScript bereits eine (interne) Darstellung zur Verfügung.

Wir müssen also nur eine externe Darstellung erzeugen. Hierzu bieten sich Felder an. Zunächst brauchen wir ein Feld, welches die Monatsnamen enthält. Dies können wir so machen:

function gMon() {
  this[0] = 'Januar';
  this[1] = 'Februar';
  this[2] = 'März';
  this[3] = 'April';
  this[4] = 'Mai';
  this[5] = 'Juni';
  this[6] = 'Juli';
  this[7] = 'August';
  this[8] = 'September';
  this[9] = 'Oktober';
  this[10] = 'November';
  this[11] = 'Dezember';
}

var monthNames = new gMon();

Sie erinnern sich, dass getMonth() den Wertebereich 0..11 hat. Dies wird hier konsequent ausgenutzt.

Warum das Beginnen bei 0 durchaus Sinn macht (neben dem effizienteren, compiliertem Code), wird klar, wenn wir diese Definition mit Hilfe von Array() schaffen:

var monthNames = new Array('Januar', 'Februar', 'März',
                         'April', 'Mai', 'Juni',
                         'Juli', 'August', 'September',
                         'Oktober', 'November', 'Dezember');

Kurz und schmerzlos, recht elegant und platzsparend (man bedenke, dass das ganze Script zu den Benutzern übertragen wird). Die so erzeugen Felder sind zero-based, d.h. haben ihr erstes Element bei Index 0.

Völlig analog schaffen wir ein Feld mit Tagesnamen:

var dayNames = new Array('Sonntag', 'Montag', 'Dienstag',
                         'Mittwoch', 'Donnerstag', 'Freitag', 'Samstag');

Dann implementieren wir noch eine kleine Hilfsfunktion, die die JavaScript-Jahreszahl in eine "echte" wandelt, also etwa 1997 aus 97 macht:

Sie erinnern sich, dass JavaScript-Jahreszahlen erst ab dem Jahre 2000 vier- und vorher zweistellig sind. t4() normiert das.

function t4(y) {
  return (y < 1000 ? y+1900 : y);
}

Alternativ können Sie getFullYear() nutzen, welches stets eine viestellige Jahreszahl liefert.

Und das war es auch schon!

Beispiel:

<script type="text/javascript"><!--
  var now = new Date();
  document.write('Heute ist ', dayNames[now.getDay()]);
  document.write(', der ', now.getDate());
  document.write('. ', monthNames[now.getMonth()]);
  document.write(' ', t4(now.getYear()));
// -->
</script>

liefert

Das Beispiel benötigt JavaScript

Wie erwähnt könnten Sie statt t4(now.getYear()) auch now.getFullYear() nutzen.