Signatur
Beschreibung
localtime() verhält sich ähnlich wie die gleichnamige C-Funktion und gibt die Komponenten eines Unix-Zeitstempels als PHP-Array zurück. Ohne Argumente wird der aktuelle Zeitpunkt (time()) verwendet.
Wird $associative auf false (Standard) gesetzt, enthält das Ergebnis-Array neun numerisch indizierte Elemente: Sekunden, Minuten, Stunden, Tag, Monat (0-basiert), Jahr (seit 1900), Wochentag, Jahrestag und DST-Flag. Mit $associative = true werden die gleichen Werte unter sprechenden Schlüsseln wie tm_sec, tm_min, tm_hour usw. geliefert.
Die Funktion eignet sich gut, wenn einzelne Zeitkomponenten benötigt werden, ohne sie manuell aus einem formatierten Datum-String parsen zu müssen. Für moderneren, objektorientierteren Umgang mit Datum und Zeit empfiehlt sich die DateTimeImmutable-Klasse.
Wichtig: Der Monatswert (tm_mon bzw. Index 4) ist 0-basiert (0 = Januar, 11 = Dezember), der Jahreswert gibt die Anzahl der Jahre seit 1900 an – also z. B. 124 für das Jahr 2024.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $timestamp | int | time() | Der Unix-Zeitstempel, für den die lokale Zeit ermittelt werden soll. Wird er weggelassen, wird der aktuelle Zeitpunkt verwendet. |
| $associative | bool | false | Legt fest, ob das zurückgegebene Array numerisch indiziert (false) oder assoziativ mit C-typischen Schlüsseln wie tm_sec, tm_min usw. (true) ist. |
Rückgabewert
Gibt ein Array mit neun Elementen zurück. Bei numerischer Indizierung (Standard):
- 0 – Sekunden (0–60)
- 1 – Minuten (0–59)
- 2 – Stunden (0–23)
- 3 – Tag des Monats (1–31)
- 4 – Monat (0–11, 0 = Januar)
- 5 – Jahr seit 1900
- 6 – Wochentag (0–6, 0 = Sonntag)
- 7 – Jahrestag (0–365)
- 8 – Sommerzeit-Flag (1 = aktiv, 0 = inaktiv, -1 = unbekannt)
Bei assoziativem Array lauten die Schlüssel: tm_sec, tm_min, tm_hour, tm_mday, tm_mon, tm_year, tm_wday, tm_yday, tm_isdst.
Beispiele
Numerisches Array mit aktuellem Zeitstempel
<?php
// Aktuellen Zeitpunkt als numerisches Array ausgeben
$zeit = localtime();
echo 'Stunden : ' . $zeit[2] . PHP_EOL;
echo 'Minuten : ' . $zeit[1] . PHP_EOL;
echo 'Sekunden: ' . $zeit[0] . PHP_EOL;
echo 'Jahr : ' . ($zeit[5] + 1900) . PHP_EOL; // +1900, da Jahre seit 1900
echo 'Monat : ' . ($zeit[4] + 1) . PHP_EOL; // +1, da 0-basiert
Assoziatives Array für einen bestimmten Zeitstempel
<?php
// Zeitstempel für den 15. August 2023 12:00:00 UTC
$timestamp = mktime(12, 0, 0, 8, 15, 2023);
$zeit = localtime($timestamp, true);
echo 'Jahr : ' . ($zeit['tm_year'] + 1900) . PHP_EOL;
echo 'Monat : ' . ($zeit['tm_mon'] + 1) . PHP_EOL; // 0-basiert
echo 'Tag : ' . $zeit['tm_mday'] . PHP_EOL;
echo 'Stunden : ' . $zeit['tm_hour'] . PHP_EOL;
echo 'DST : ' . ($zeit['tm_isdst'] ? 'aktiv' : 'inaktiv') . PHP_EOL;
// Wichtig · Fallstricke
Fallstricke mit Monat und Jahr: Der Monatswert ist 0-basiert (0 = Januar), der Jahreswert gibt Jahre seit 1900 an. Beide müssen entsprechend umgerechnet werden (+1 bzw. +1900), um lesbare Werte zu erhalten.
Zeitzone: localtime() verwendet die serverseitig eingestellte Zeitzone (via date_default_timezone_set() oder php.ini). Bei internationalen Anwendungen daher die Zeitzone vorab korrekt setzen.
Für neue Projekte empfiehlt sich der Einsatz von DateTimeImmutable oder date()/getdate(), da diese eine klarere API bieten und besser wartbar sind.