Verwalten von Kalenderdatum und -zeit

Flash Player 9 und höher, Adobe AIR 1.0 und höher

Alle Funktionen zum Verwalten von Kalenderdaten und Uhrzeiten in ActionScript 3.0 sind in der Date-Hauptklasse konzentriert. Die Date-Klasse enthält Methoden und Eigenschaften, mit denen Sie Datums- und Uhrzeitangaben entweder in der Standardweltzeit (UTC, Coordinated Universal Time) oder in der spezifischen Ortszeit einer Zeitzone verwalten können. Bei der UTC handelt es sich um eine Standardzeitdefinition, die der Greenwich Mean Time (GMT) entspricht.

Erstellen von Date-Objekten

Die Date-Klasse ist mit Abstand eine der vielseitigsten Konstruktormethoden aller Hauptklassen. Sie können diese Klasse auf vier verschiedene Arten aufrufen.

Wenn erstens keine Parameter angegeben werden, gibt der Date() -Konstruktor ein Date-Objekt mit den aktuellen Datums- und Uhrzeitangaben in der Ortszeit der entsprechenden Zeitzone zurück. Beispiel:

var now:Date = new Date();

Wenn zweitens ein einzelner numerischer Parameter angegeben wird, wird dieser im Date() -Konstruktor als Anzahl der Millisekunden seit dem 1. Januar 1970 interpretiert und ein entsprechendes Date-Objekt wird zurückgegeben. Beachten Sie, dass der übergebene Wert als Millisekunden seit dem 1. Januar 1970 (UTC) interpretiert wird. Beim Date-Objekt werden jedoch Werte in der entsprechenden Ortszeit angegeben, es sei denn, Sie verwenden UTC-spezifische Methoden, um die Werte abzurufen und anzuzeigen. Wenn Sie ein neues Date-Objekt mit einem einzelnen milliseconds-Parameter erstellen, beachten Sie daher dabei den Zeitunterschied zwischen der Ortszeit und der Weltzeit. Mit den folgenden Anweisungen wird ein Date-Objekt erstellt, das auf Mitternacht des 1. Januar 1970 (UTC) gesetzt ist:

var millisecondsPerDay:int = 1000 * 60 * 60 * 24; 
// gets a Date one day after the start date of 1/1/1970 
var startTime:Date = new Date(millisecondsPerDay);

Sie können drittens mehrere numerische Parameter an den Date() -Konstruktor übergeben. Diese Parameter werden jeweils als Jahr, Monat, Tag, Stunde, Minute, Sekunde und Millisekunde verarbeitet. Ein entsprechendes Date-Objekt wird zurückgegeben. Bei diesen Eingabeparametern wird davon ausgegangen, dass sie in Ortszeit und nicht gemäß der Weltzeit (UTC) angegeben werden. Mit den folgenden Anweisungen wird ein Date-Objekt erstellt, das auf Mitternacht des 1. Januar 2000, Ortszeit gesetzt ist:

var millenium:Date = new Date(2000, 0, 1, 0, 0, 0, 0);

Sie können viertens einen einzelnen Stringparameter an den Date() -Konstruktor übergeben. Dieser String wird in Datums- oder Zeitkomponenten geparst. Anschließend wird ein entsprechendes Date-Objekt zurückgegeben. Bei dieser Vorgehensweise empfiehlt es sich, den Date() -Konstruktor in einen try..catch -Codeblock einzuschließen, um eventuelle Parsingfehler abzufangen. Der Date() -Konstruktor akzeptiert verschiedene Stringformate (eine Liste dieser Formate finden Sie im ActionScript 3.0-Referenzhandbuch für die Adobe Flash-Plattform ). Mit der folgenden Anweisung wird ein neues Date-Objekt mit einem Stringwert initialisiert:

var nextDay:Date = new Date("Mon May 1 2006 11:30:00 AM");

Wenn der Date() -Konstruktor den Stringparameter nicht erfolgreich analysieren kann, wird eine Ausnahme ausgelöst. Das resultierende Date-Objekt enthält jedoch einen ungültigen Datumswert.

Abrufen von Werten für Zeiteinheiten

Sie können die Werte verschiedener Zeiteinheiten in einem Date-Objekt mithilfe der Eigenschaften oder Methoden der Date-Klasse abrufen. Mit jeder der folgenden Eigenschaften wird der Wert für eine bestimmte Zeiteinheit im Date-Objekt abgerufen:

  • fullYear -Eigenschaft

  • month -Eigenschaft (im numerischen Format von 0 für Januar bis 11 für Dezember)

  • date -Eigenschaft (mit dem numerischen Kalendertag im Monat, im Bereich von 1 bis 31)

  • day -Eigenschaft (der Wochentag im numerischen Format, mit dem Wert 0 für Sonntag)

  • hours -Eigenschaft (im Bereich von 0 bis 23)

  • minutes -Eigenschaft

  • seconds -Eigenschaft

  • milliseconds -Eigenschaft

    Über die Date-Klasse stehen zahlreiche Möglichkeiten zur Verfügung, um jeden dieser Werte abzurufen. Sie können den Wert für den Monat eines Date-Objekts beispielsweise auf vier verschiedene Weisen abrufen:

  • mit der month -Eigenschaft

  • mit der getMonth() -Methode

  • mit der monthUTC -Eigenschaft

  • mit der getMonthUTC() -Methode

    Alle vier Möglichkeiten sind im Wesentlichen gleich effizient, sodass Sie das Verfahren anwenden können, das sich für die entsprechende Anwendung am besten eignet.

    Alle aufgeführten Eigenschaften sind Komponenten des Date-Gesamtwerts. Der Wert der milliseconds-Eigenschaft ist beispielsweise nie größer als 999, da beim Erreichen von 1000 der Wert der seconds-Eigenschaft um 1 erhöht und der Wert der milliseconds-Eigenschaft auf 0 zurückgesetzt wird.

    Wenn Sie den Wert des Date-Objekts in Millisekunden seit dem 1. Januar 1970 (UTC) abrufen möchten, können Sie die getTime() -Methode verwenden. Mit dem Gegenstück, der setTime() -Methode, können Sie den Wert eines vorhandenen Date-Objekts in Millisekunden ab dem 1. Januar 1970 (UTC) ändern.

Berechnen von Datum und Uhrzeit

Sie können Datums- und Uhrzeitangaben mithilfe der Date-Klasse addieren und subtrahieren. Datumswerte werden intern in Millisekunden gespeichert, sodass Sie andere Werte in Millisekunden umrechnen sollten, bevor Sie sie zu Date-Objekten addieren oder von Date-Objekten subtrahieren.

Wenn in einer Anwendung zahlreiche Datums- und Uhrzeitberechnungen durchgeführt werden, empfiehlt es sich, Konstanten für häufig verwendete Zeiteinheiten in Millisekunden zu erstellen, wie beispielsweise die folgende Konstante:

public static const millisecondsPerMinute:int = 1000 * 60; 
public static const millisecondsPerHour:int = 1000 * 60 * 60; 
public static const millisecondsPerDay:int = 1000 * 60 * 60 * 24;

Nun können Datumsberechnungen mit Standardzeiteinheiten poblemlos durchgeführt werden. Mit dem folgenden Code wird ein Datumswert mithilfe der getTime() -Methode und der setTime() -Methode auf eine Stunde vor der aktuellen Zeit gesetzt:

var oneHourFromNow:Date = new Date(); 
oneHourFromNow.setTime(oneHourFromNow.getTime() + millisecondsPerHour);

Eine andere Möglichkeit zum Festlegen eines Datumswerts besteht darin, ein neues Date-Objekt mit einem milliseconds-Parameter zu erstellen. Mit dem folgenden Code werden beispielsweise 30 Tage zu einem Date-Objekt addiert, um dadurch ein anderes Date-Objekt zu berechnen:

// sets the invoice date to today's date 
var invoiceDate:Date = new Date(); 
 
// adds 30 days to get the due date 
var dueDate:Date = new Date(invoiceDate.getTime() + (30 * millisecondsPerDay));

Anschließend wird die millisecondsPerDay -Konstante mit 30 multipliziert, um einen Zeitraum von 30 Tagen anzugeben. Das Ergebnis wird zum Wert von invoiceDate addiert und zum Festlegen des Wertes von dueDate verwendet.

Konvertieren von Zeitangaben zwischen Zeitzonen

Datums- und Uhrzeitberechnungen können bei der Umwandlung von Datumsangaben zwischen zwei Zeitzonen eingesetzt werden. Dazu kann auch die getTimezoneOffset() -Methode verwendet werden, bei der der Wert in Minuten zurückgegeben wird, um die die Zeitzone des Date-Objekts von der Weltzeit abweicht. Mit der Methode wird ein Wert in Minuten zurückgegeben, da nicht alle Zeitzonen in Segmente mit vollen Stunden unterteilt sind. Bei einigen liegen halbstündliche Abweichungen zu anderen Zeitzonen vor.

Im folgenden Beispiel wird anhand des Zeitzonenunterschieds ein Date-Objekt von der Ortszeit in die Weltzeit konvertiert. Bei der Umwandlung wird zunächst der Wert für die Zeitzone in Millisekunden berechnet und der Date-Wert dann um diese Zeitangabe geändert:

// creates a Date in local time 
var nextDay:Date = new Date("Mon May 1 2006 11:30:00 AM"); 
 
// converts the Date to UTC by adding or subtracting the time zone offset 
var offsetMilliseconds:Number = nextDay.getTimezoneOffset() * 60 * 1000; 
nextDay.setTime(nextDay.getTime() + offsetMilliseconds);