Start · Sprachen · PHP · Referenz · localtime

localtime

Funktion

Gibt die lokale Zeit für einen Unix-Zeitstempel als Array zurück – entweder numerisch indiziert oder als assoziatives Array.

seit PHP 4.0.0 Kategorie: date

Signatur

localtime(int $timestamp = time(), bool $associative = false): array

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

Typ
array
Beschreibung

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
Stunden : 14 Minuten : 35 Sekunden: 22 Jahr : 2024 Monat : 6

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;
Jahr : 2023 Monat : 8 Tag : 15 Stunden : 12 DST : aktiv

// 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.