
Introducción
En PHP, las funciones de fecha y hora son esenciales para generar marcas de tiempo, registrar eventos, calcular diferencias o mostrar fechas legibles.
Una de las tareas más comunes es convertir el resultado de time() (un número entero en segundos) a una cadena de texto con formato de fecha y hora, como "2025-11-21 09:30:00" o "21 de noviembre de 2025, 9:30 a.m.".
Esta guía te muestra cómo hacerlo correctamente, con ejemplos prácticos, diferencias entre time(), date(), strftime() y DateTime.
🧠 Qué es time() en PHP
La función time() devuelve el timestamp Unix actual: el número de segundos desde el 1 de enero de 1970 (UTC).
echo time();
👉 Ejemplo de salida:
1732188600
Esto no es legible por humanos, por lo que necesitamos convertirlo con funciones de formato.
🧩 Convertir time() a cadena con date()
La forma más directa de formatear un timestamp es usando date(formato, timestamp).
$ahora = time();
echo date('Y-m-d H:i:s', $ahora);
Salida:
2025-11-21 09:30:00
Formatos más usados
| Código | Significado | Ejemplo |
|---|---|---|
Y | Año completo | 2025 |
m | Mes (con 0) | 11 |
d | Día (con 0) | 21 |
H | Hora 24h | 09 |
i | Minutos | 30 |
s | Segundos | 00 |
D | Día corto (Mon) | Fri |
l | Día completo (Monday) | Friday |
Ejemplo:
echo date('l, d/m/Y H:i:s', time());
Salida:
Friday, 21/11/2025 09:30:00
🌎 Mostrar fechas en español con setlocale() y strftime()
strftime() usa la configuración regional del sistema (locale) para mostrar el nombre del mes y del día en el idioma deseado.
setlocale(LC_TIME, 'es_ES.UTF-8', 'es_MX.UTF-8', 'Spanish_Mexico');
echo strftime('%A %e de %B de %Y, %H:%M:%S', time());
Salida:
viernes 21 de noviembre de 2025, 09:30:00
⚠️ Nota: en PHP 8.1+
strftime()está en desuso. Se recomiendaIntlDateFormatteroDateTime::format()con locales.
🧮 Usando la clase DateTime
Una forma moderna y orientada a objetos:
$fecha = new DateTime();
echo $fecha->format('Y-m-d H:i:s');
También puedes pasar un timestamp:
$fecha = new DateTime('@1732188600');
$fecha->setTimezone(new DateTimeZone('America/Mexico_City'));
echo $fecha->format('d/m/Y H:i:s');
🌐 Ejemplo completo (con zona horaria)
date_default_timezone_set('America/Mexico_City');
$timestamp = time();
$fecha_corta = date('d/m/Y', $timestamp);
$fecha_larga = strftime('%A %d de %B de %Y', $timestamp);
echo "Fecha corta: $fecha_corta\n";
echo "Fecha larga: $fecha_larga\n";
Salida:
Fecha corta: 21/11/2025
Fecha larga: viernes 21 de noviembre de 2025
💡 Tips y buenas prácticas
- Siempre configura la zona horaria:
date_default_timezone_set('America/Mexico_City'); - Usa
DateTimepara código nuevo;date()para scripts sencillos. - Evita
strftime()en PHP 8.1+ (deprecado). - Usa
IntlDateFormattersi necesitas soporte completo de idioma y región.
✅ Conclusión
Para convertir time() a una cadena legible en PHP:
- Usa
date('Y-m-d H:i:s', time())para formato ISO estándar. - Usa
strftime()oIntlDateFormattersi necesitas idioma local. - Usa
DateTimepara código moderno, zonas horarias y manipulación avanzada.
Con estos métodos podrás formatear fechas correctamente, registrar eventos y mostrar información temporal precisa a tus usuarios.
