Zum Inhalt

Zeit- und Datumsberechnung

Alvine biete mit den Klassen aus dem date-Namespace einige nützliche Funktionen zur Zeit- und Datumsberechnung an.

Grundlagen

Die Basis der Zeitberechnung ist die Klasse Quantity. Diese Klasse stellt alle notwendigen Funktionen und Eigenschaften für die Arbeit mit Datum und Zeit zur Verfügung.

$instant = new \Alvine\Date\Instant(1920, 12, 24);
echo (string)$instant; // 1920-12-24 00:00:00


// Tag der Mondlandung
$instant = new \Alvine\Date\Instant(1969, 7, 21, 2, 56, 20);
echo (string)$instant; // 1969-07-21T02:56:20

// Es erfolgt kein Überlauf, beim Überschreiten
// der einzelnen Bereiche
$instant = new \Alvine\Date\Instant(99999, 9999, 9999, 9999, 9999, 9999);
echo $instant; // 99999-9999-9999T9999:9999:9999

$quantity = new \Alvine\Date\DateTime();
echo (string)$quantity; // 0000-01-01T00:00:00

Eine konkrete Ableitung von Quantity ist die Instant-Klasse, sie definiert einen Moment, der über die Parameter Jahr, Monat, Tag, Stunde, Minute, Sekunde und Nanosekunde definiert ist. Die Klassen Date, Time und Datetime sind konkrete Ableitungen der Klasse AbstractDateTime, die wiederum von Instant abgeleitet ist.

Aktuelle Zeit

Wird für die weitere Verarbeitung die aktuelle Zeit benötigt, so kann dieser über die Methode fromNow() geholt werden.

$timestamp = \Alvine\Date\Time::fromNow();
print_r($timestamp);
echo $timestamp;echo "\r\n";
echo date('Y.m.d H:i:s');

Spezialisierungen

Um bestimmte Sachverhalte besser abzubilden und unnötige Informationen auszublenden, gibt es Spezialklassen, wie die YearMonth-Klasse. Die JahrMonats-Klasse eignet sich zum Beispiel zum Speichern des "Gültig bis"-Datums von Kreditkarten.

// Gültig bis Dezember 2020
$valid=new \Alvine\Date\YearMonth(2020, 12);
echo (string) $valid; // 2020-12

Sekunden

Die Klasse Seconds bildet einen Sonderfall, sie ist nicht von Time, sondern von Instant abgeleitet und kann somit nicht nur Zahlen von 0 bis 59 aufnehmen, sondern auch komplette Timestamps.

Kommentare