W3docs

localtime()

localtime() ist eine PHP-Funktion, die einen Unix-Zeitstempel in ein Array lokaler Zeitwerte umwandelt, mit Feldern wie Sekunde, Minute, Stunde usw.

Warnung: localtime() wurde in PHP 7.0 als veraltet markiert und in PHP 8.0 entfernt. Sie ist in modernem PHP nicht mehr verfügbar. Verwenden Sie für neuen Code die DateTime-Klasse oder date() zusammen mit date_default_timezone_set(). Die folgenden Beispiele sind für Leser gedacht, die Legacy-Code mit PHP 5.x/7.x warten.

localtime() war eine eingebaute PHP-Funktion, die einen Unix-Zeitstempel in die einzelnen Komponenten von lokalem Datum und Uhrzeit aufschlüsselte — Sekunde, Minute, Stunde, Tag, Monat, Jahr usw. Sie spiegelte den C-Bibliotheksaufruf localtime() wider und gab ein Array mit 9 Elementen statt eines formatierten Strings zurück. Das war nützlich, wenn einzelne Felder gelesen oder berechnet werden mussten (zum Beispiel: „Ist heute ein Wochenende?"), anstatt ein Datum auszugeben.

Da sie die lokale Zeit zurückgab, hing das Ergebnis von der konfigurierten Zeitzone des Servers ab. Um die Ausgabe über verschiedene Maschinen hinweg vorhersagbar zu machen, sollte die Zeitzone mit date_default_timezone_set() explizit gesetzt werden, bevor die Funktion aufgerufen wird.

Syntax

<?php

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

Der Parameter timestamp ist der Unix-Zeitstempel, der konvertiert werden soll (standardmäßig die aktuelle Zeit über time()). associative ist ein optionaler Boolean, der bestimmt, ob das zurückgegebene Array nach Namen oder nach Position indiziert wird.

Indiziertes (Standard-)Array

Wenn associative false ist oder weggelassen wird, ist das Array numerisch indiziert und enthält folgende Werte in dieser Reihenfolge:

  • 0: Sekunden (0–59).
  • 1: Minuten (0–59).
  • 2: Stunden (0–23).
  • 3: Tag des Monats (1–31).
  • 4: Monat (0–11, wobei 0 Januar ist).
  • 5: Jahre seit 1900.
  • 6: Wochentag (0–6, wobei 0 Sonntag ist).
  • 7: Tag des Jahres (0–365).
  • 8: Ob Sommerzeit gilt (1 wenn ja, 0 wenn nein, -1 wenn unbekannt).

Achtung: Zwei dieser Felder werden leicht falsch gelesen. Der Monat (Index 4) ist nullbasiert (0 = Januar, 11 = Dezember), also muss 1 addiert werden, um einen menschenlesbaren Monat zu erhalten. Das Jahr (Index 5) zählt Jahre seit 1900, also muss 1900 addiert werden, um das Kalenderjahr zu erhalten.

Assoziatives Array

Wenn associative auf true gesetzt wird, werden die Array-Schlüssel nach den C-struct tm-Feldern benannt statt nach Ganzzahlen. Das macht das Ergebnis selbstdokumentierend:

array(
  'tm_sec'   => ...,  // seconds (0-59)
  'tm_min'   => ...,  // minutes (0-59)
  'tm_hour'  => ...,  // hours (0-23)
  'tm_mday'  => ...,  // day of the month (1-31)
  'tm_mon'   => ...,  // month (0-11)
  'tm_year'  => ...,  // years since 1900
  'tm_wday'  => ...,  // day of the week (0-6, Sunday = 0)
  'tm_yday'  => ...,  // day of the year (0-365)
  'tm_isdst' => ...,  // daylight saving flag (1, 0, or -1)
)

Beispiele

<?php

// Get the current local time
$now = time();
$localtime = localtime($now);
print_r($localtime);

// Get the local time for a specific Unix timestamp
$timestamp = 1646563200; // March 5, 2022, 12:00:00 AM UTC
$localtime = localtime($timestamp);
print_r($localtime);

// Get the local time as an associative array
$now = time();
$localtime = localtime($now, true);
echo "The current year is " . ($localtime['tm_year'] + 1900);

Diese Beispiele zeigen, wie localtime() verwendet werden kann, um Unix-Zeitstempel in lokale Zeitwerte umzuwandeln und einzelne Felder bei Bedarf auszulesen.

Der moderne Ersatz

Da localtime() in PHP 8 nicht mehr vorhanden ist, ist die empfohlene Methode zum Aufteilen eines Zeitstempels in seine Bestandteile getdate() (das bereits ein benutzerfreundliches assoziatives Array mit mon, year, wday usw. zurückgibt) oder das objektorientierte DateTime:

<?php

date_default_timezone_set('UTC');

$parts = getdate(1646438400); // 2022-03-05 00:00:00 UTC
echo $parts['mday'] . '-' . $parts['mon'] . '-' . $parts['year']; // 5-3-2022

$dt = new DateTime('@1646438400');
echo $dt->format('Y-m-d H:i:s'); // 2022-03-05 00:00:00

Im Gegensatz zu localtime() liefert getdate() year und mon direkt (ohne +1900- oder +1-Arithmetik), und DateTime ermöglicht das Formatieren oder Durchführen von Datumsberechnungen, ohne Array-Indizes jonglieren zu müssen.

Siehe auch

  • getdate() — der unterstützte Ersatz, der ein beschriftetes Datum-Array zurückgibt.
  • mktime() — erstellt einen Zeitstempel aus einzelnen lokalen Zeitkomponenten (die umgekehrte Operation).
  • strtotime() — analysiert einen menschenlesbaren Datumsstring und wandelt ihn in einen Zeitstempel um.
  • PHP Date and Time — Überblick über PHPs Datums-/Zeitwerkzeuge.

Übungen

Übung
Was ist die Funktion von localtime() in PHP?
Was ist die Funktion von localtime() in PHP?
Was this page helpful?