PHP fecha() es una de las herramientas más potentes y utilizadas para manejar el formato de fecha y hora en aplicaciones web. Tanto si estás creando un blog, una plataforma de comercio electrónico o un panel de control, es esencial mostrar las fechas de forma sencilla. En esta completa guía,
profundizaremos en la fecha() explora su sintaxis, especificadores de formato, ejemplos reales, buenas prácticas y errores comunes.
¿Qué es la función PHP Date()?
El fecha() en PHP formatea una fecha y hora local de acuerdo con una cadena de formato especificada. Devuelve una cadena que representa la fecha/hora formateada.
Sintaxis básica
PHP
string date(string $format, ?int $timestamp = null)
1TP4Formato: Una cadena que contiene especificadores de formato (por ejemplo,Y,metro,d).1TP4Hora: Marca de tiempo Unix opcional. Si se omite, se utiliza la hora actual.
Nota: A partir de PHP 8.0+, el segundo parámetro es anulable (?int).
Especificadores de formato de fecha PHP
He aquí una tabla de referencia rápida de los caracteres de formato más utilizados:
| Especificador | Descripción | Ejemplo de salida |
Y | Año de 4 cifras | 2026 |
y | Año de 2 cifras | 25 |
metro | Mes (01-12) | 11 |
n | Mes sin ceros a la izquierda (1-12) | 11 |
F | Nombre completo del mes | Noviembre |
M | Nombre corto del mes (3 letras) | Nov |
d | Día del mes con ceros a la izquierda | 17 |
j | Día sin ceros a la izquierda | 17 |
l | Nombre completo del día de la semana | Lunes |
D | Día laborable corto (3 letras) | Lun |
H | Formato de 24 horas (00-23) | 11 |
h | Formato de 12 horas (01-12) | 11 |
i | Minutos con ceros a la izquierda | 37 |
s | Segundos con ceros a la izquierda | 45 |
A | Mayúsculas AM/PM | AM |
a | Minúsculas am/pm | soy |
T | Abreviatura de la zona horaria | IST |
c | Formato ISO 8601 | 2026-11-17T11:37:45+05:30 |
r | Formato RFC 2822 | Lun, 17 Nov 2026 11:37:45 +0530 |
Ejemplos básicos de formato de fecha PHP
1. Fecha y hora actuales
PHP
echo fecha(‘Y-m-d H:i:s’);
// Salida: 2026-11-17 11:37:452. Formato legible
PHP
echo fecha(‘l, F j, Y \a\t g:i A’);
// Salida: Lunes, 17 de Noviembre de 2026 a las 11:37 AMUtilice \ para escapar de caracteres como en para que aparezcan literalmente.
3. Fecha corta
PHP
echo fecha('d/m/Y');
// Salida: 17/11/20264. Sólo tiempo
PHP
echo fecha('h:i A');
// Salida: 11:37 AMTrabajar con marcas de tiempo
Puede formatear cualquier marca de tiempo Unix:
PHP
$timestamp = strtotime('2026-01-01 00:00:00');
echo date('Y-m-d', $timestamp);
// Salida: 2026-01-01Combinar con strtotime()
PHP
echo date('F j, Y', strtotime('+7 días'));
// Salida: 24 de noviembre de 2026Manejo de la zona horaria (¡Crítico!)
Por defecto, fecha() utiliza la zona horaria por defecto del servidor. Configúrela siempre de forma explícita:
PHP
date_default_timezone_set('Asia/Kolkata'); // IST
echo date('A-m-d H:i:s T');
// Salida: 2026-11-17 11:37:45 ISTBuenas prácticas: Establezca la zona horaria en la parte superior de su archivo de configuración o punto de entrada.
Casos reales de uso del formato de fecha PHP
1.Fechas de publicación del blog
PHP
$post_date = '2026-11-10 14:30:00';
echo date('M j, Y', strtotime($post_date));
// Salida: Nov 10, 20262. Tiempo relativo (“hace 2 horas”)
PHP
function timeAgo($timestamp) {
$diff = tiempo() - $timestamp;
if ($diff < 60) return "Hace $diff segundos";
if ($diff < 3600) return round($diff/60) . "hace minutos";
if ($diff < 86400) return round($diff/3600) . "hace horas";
return date('M j', $timestamp);
}
echo timeAgo(strtotime('2026-11-17 09:00:00'));
// Salida: Hace 2 horas3. Cuenta atrás del evento
PHP
$event = strtotime('2026-12-25 00:00:00');
1TP4Ahora = tiempo();
1TP4Días_izquierda = floor((1TP4Evento - 1TP4Ahora) / 86400);
echo "¡La Navidad es en $days_left días!";
// Salida: ¡La Navidad es en 38 días!Errores comunes y cómo evitarlos
| Edición | Solución |
| Zona horaria incorrecta | Utilice siempre date_default_timezone_set() |
fallos similares al efecto 2000 con y | Prefiera Y para todo el año |
| Confusión de ceros a la izquierda | Utilice j en lugar de d si no quieres ceros |
| Problemas de localización | Utilice setlocale() + strftime() para nombres localizados |
| ¿Quedará obsoleto en el futuro? | ¡No! Pero considera FechaHora para operaciones complejas |
Consejos profesionales
1. Utilice FechaHora para necesidades avanzadas
2. php
$dt = nueva DateTime('ahora', nueva DateTimeZone('Asia/Kolkata'));
3. echo $dt->format('Y-m-d H:i:s');
4. Cache Fechas Formateadas
Evite llamar fecha() en bucles para mejorar el rendimiento.
5. Validar marcas de tiempo de entrada
6. PHP
if ($timestamp === false) {
$timestamp = tiempo();
7. }
8. Internacionalización
9. PHP
setlocale(LC_TIME, 'hi_IN');
10. echo strftime('%e %B %Y'); // Fecha hindi
Bonus: Formatos de citas de una línea
PHP// ISOdate('c');
// Formato USdate('m/d/Y h:i A');
// Formato UEdate('d.m.Y H:i');
Conclusión
Dominio de fecha() se trata de comprender su especificadores de formato, manejo de la zona horaria, y integración con strtotime(). Mientras que FechaHora ofrece más potencia para escenarios complejos, fecha() sigue siendo ligero, rápido y perfecto para 90% de casos de uso. Carmateclíder en empresa de desarrollo PHP, para ofrecer una funcionalidad basada en el tiempo limpia, eficiente y fiable.