localtime()
localtime() es una función PHP que convierte un timestamp Unix en un array con los componentes de fecha y hora local.
Advertencia:
localtime()fue declarada obsoleta en PHP 7.0 y eliminada en PHP 8.0. Ya no está disponible en PHP moderno. Para código nuevo, utiliza la claseDateTime, odate()junto condate_default_timezone_set(). Los ejemplos a continuación se mantienen para lectores que trabajan con código legado de PHP 5.x/7.x.
localtime() era una función PHP integrada que descomponía un timestamp Unix en los componentes individuales de la fecha y hora local: segundo, minuto, hora, día, mes, año, entre otros. Reflejaba la llamada localtime() de la biblioteca C y devolvía un array de 9 elementos en lugar de una cadena formateada, lo que la hacía útil cuando se necesitaba leer o calcular campos individuales (por ejemplo, "¿es actualmente fin de semana?") en lugar de imprimir una fecha.
Dado que devolvía la hora local, el resultado dependía de la zona horaria configurada en el servidor. Para que la salida fuera predecible entre máquinas, era necesario establecer la zona horaria explícitamente con date_default_timezone_set() antes de llamarla.
Sintaxis
<?php
localtime(int $timestamp = time(), bool $associative = false): arrayEl parámetro timestamp es el timestamp Unix que se desea convertir (por defecto usa la hora actual mediante time()). associative es un Boolean opcional que determina si el array devuelto está indexado por nombre o por posición.
Array indexado (por defecto)
Si associative es false o se omite, el array está indexado numéricamente y contiene estos valores, en orden:
0: Segundos (0-59).1: Minutos (0-59).2: Horas (0-23).3: Día del mes (1-31).4: Mes (0-11, donde 0 es enero).5: Años desde 1900.6: Día de la semana (0-6, donde 0 es domingo).7: Día del año (0-365).8: Si el horario de verano está en vigor (1si sí,0si no,-1si es desconocido).
Precaución: Dos de estos campos son fáciles de interpretar mal. El índice de mes 4 es base cero (
0= enero,11= diciembre), por lo que hay que sumar1para obtener un mes legible. El año (índice 5) cuenta años desde 1900, así que hay que sumar1900para obtener el año del calendario.
Array asociativo
Si associative se establece en true, las claves del array se nombran según los campos de la struct tm de C en lugar de enteros, lo que hace que el resultado sea autodocumentado:
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)
)Ejemplos
<?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);Estos ejemplos muestran cómo usar localtime() para convertir timestamps Unix en valores de hora local y leer campos individuales según sea necesario.
El reemplazo moderno
Dado que localtime() no existe en PHP 8, la manera recomendada de descomponer un timestamp en sus partes es getdate() (que ya devuelve un array asociativo amigable con mon, year, wday, etc.) o el DateTime orientado a objetos:
<?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:00A diferencia de localtime(), getdate() te da year y mon directamente (sin aritmética +1900 ni +1), y DateTime permite formatear o realizar cálculos de fechas sin manipular índices de array.
Ver también
getdate()— el reemplazo soportado que devuelve un array de fecha etiquetado.mktime()— construye un timestamp a partir de componentes individuales de hora local (la operación inversa).strtotime()— analiza una cadena de fecha legible por humanos y la convierte en un timestamp.- PHP Date and Time — descripción general de las herramientas de fecha/hora de PHP.