Der Browser-Speicher localStorage ist nicht verfügbar. Entweder unterstützt dein Browser ihn nicht oder du hast ihn deaktiviert oder er ist voll. Ohne localStorage werden deine Lösungen nicht gespeichert.

Weltzeit

Wenn man mit Datum und Uhrzeit arbeitet, muss man zwischen koordinierter Weltzeit (UTC, engl. Coordinated Universal Time) und Zonenzeit unterscheiden. Die koordinierte Weltzeit stellt weltweit eine einheitliche Zeitangabe her. Die Zonenzeit ist die in einer Zeitzone geltende Zeit. Von der koordinierten Weltzeit werden die verschiedenen Zonenzeiten abgeleitet. So ergibt sich die Mitteleuropäische Zeit (MEZ) aus der koordinierten Weltzeit durch Addition von einer Stunde (kurz UTC+1). Die Mitteleuropäische Sommerzeit (MESZ) entspricht UTC+2. UTC selbst ist die Zonenzeit der Westeuropäischen Zeit (WEZ).

Was wir bisher über das Date-Objekt gelernt haben, bezog sich meist auf die Zonenzeit. So liefert der Ausdruck new Date(2018, 4, 5) ein Date-Objekt, das dem Zeitpunkt 5.5.2018, 0:00 Uhr in lokaler Zeit entspricht. Macht man diesen Aufruf in Deutschland, erhält man den 5.5.2018, 0:00 UTC+2 (Sommerzeit). In Japan liefert derselbe Aufruf den 5.5.2018, 0:00 UTC+9. Zwischen beiden Zeitpunkten liegt eine Differenz von 7 Stunden. Möchte man weltweit einen einheitlichen Zeitpunkt erzeugen, so muss man die koordinierte Weltzeit verwenden. Leider kann man nicht direkt ein Date aus den UTC-Daten erzeugen. Man muss einen Umweg über die Millisekunden seit dem 1.1.1970 machen:
let millis = Date.UTC(2018, 4, 5);
let datum = new Date(millis);
Mit Date.UTC() erhält man zunächst die vergangenen Millisekunden seit dem 1.1.1970, 0:00 UTC. Mit dieser Zahl und new Date() erzeugt man anschließend das gewünschte Date-Objekt. Der Konstruktor-Aufruf mit den Millisekunden als Parameter bezieht sich nämlich auch auf den 1.1.1970, 0:00 UTC. Die Variable datum repräsentiert den 5.5.2018, 0:00 UTC. Date.UTC() kann analog zu new Date() mit bis zu sieben Parametern (Jahr, Monat, Tag, Stunden, Minuten, Sekunden und Millisekunden) aufgerufen werden. Es gelten dieselben Regeln wie bei new Date(): Bei Jahreszahlen zwischen 0 und 99 wird 1900 hinzuaddiert und die Monate werden beginnend mit 0 durchnummeriert.

Aufgabe

Schreibe eine Funktion nikolausUTC, die eine Jahresangabe als Zahl entgegennimmt und die ein Date-Objekt mit dem 6. Dezember des übergebenen Jahres, 0:00 UTC, zurückgibt.

Beispiel: nikolaus(2017) sollte ein Date-Objekt mit dem Zeitpunkt 6.12.2017, 0:00 UTC zurückgeben.

loving