idate()
idate() es una función integrada de PHP que extrae información específica de un timestamp Unix y la devuelve como un entero.
idate() es una función integrada de PHP que extrae un único dato de fecha u hora de un timestamp Unix y lo devuelve como un entero. El nombre significa integer date (fecha entera). A diferencia de date(), que construye una cadena formateada a partir de uno o más caracteres de formato, idate() acepta exactamente un carácter de formato y te devuelve un número simple con el que puedes hacer operaciones matemáticas de inmediato.
Esta página cubre la sintaxis, los caracteres de formato que entiende idate(), ejemplos ejecutables, cómo difiere de date() y los errores comunes a tener en cuenta.
Sintaxis
idate(string $format, ?int $timestamp = null): int|false$format— un único carácter de formato (consulta la tabla más abajo). Pasar una cadena de más de un carácter genera una advertencia y devuelvefalse.$timestamp— un timestamp Unix opcional (segundos desde el 1 de enero de 1970, UTC). Si se omite, se utiliza la fecha y hora actuales.
Devuelve un entero o false en caso de error.
Caracteres de formato
idate() admite un subconjunto de los caracteres de formato de date() — solo aquellos que producen un valor numérico.
| Código | Devuelve | Ejemplo |
|---|---|---|
Y | Año de cuatro dígitos | 2023 |
y | Año de dos dígitos | 23 |
m | Número de mes (1–12) | 3 |
n | Número de mes (igual que m) | 3 |
d | Día del mes (1–31) | 5 |
j | Día del mes (igual que d) | 5 |
H | Hora, formato 24 horas (0–23) | 17 |
G | Hora, formato 24 horas (igual que H) | 17 |
i | Minutos (0–59) | 30 |
s | Segundos (0–59) | 45 |
N | Día de la semana ISO (1 = lunes … 7 = domingo) | 7 |
w | Día de la semana (0 = domingo … 6 = sábado) | 0 |
z | Día del año, base cero (0–365) | 63 |
t | Número de días en el mes dado | 31 |
L | ¿Año bisiesto? 1 si sí, 0 si no | 0 |
U | El propio timestamp Unix | 1678037445 |
Importante:
idate()devuelve un número, no una cadena con ceros a la izquierda.idate('m')para marzo devuelve el entero3, no"03". Si necesitas un cero inicial, usadate('m')en su lugar, que devuelve la cadena"03".
Ejemplo básico
<?php
// March 5, 2023, 17:30:45
$timestamp = mktime(17, 30, 45, 3, 5, 2023);
echo idate('Y', $timestamp) . "\n"; // 2023
echo idate('m', $timestamp) . "\n"; // 3
echo idate('d', $timestamp) . "\n"; // 5
echo idate('H', $timestamp) . "\n"; // 17
echo idate('i', $timestamp) . "\n"; // 30
echo idate('s', $timestamp) . "\n"; // 45Como el valor de retorno es un entero, puedes usarlo directamente en operaciones aritméticas y comparaciones:
<?php
$timestamp = mktime(17, 30, 45, 3, 5, 2023);
if (idate('N', $timestamp) >= 6) {
echo "It's the weekend.\n";
} else {
echo "It's a weekday.\n";
}
// March 5, 2023 was a Sunday (N = 7), so this prints:
// It's the weekend.Usar la hora actual
Cuando omites el segundo argumento, idate() lee la fecha y hora actuales, lo que lo hace muy útil para comprobaciones rápidas:
<?php
$currentYear = idate('Y');
echo "The current year is {$currentYear}.\n";
// Detect a leap year
echo idate('L') ? "This year is a leap year.\n" : "This year is not a leap year.\n";idate() vs. date()
idate() | date() | |
|---|---|---|
| Longitud del formato | Solo un carácter | Cualquier número de caracteres |
| Tipo de retorno | int (o false) | string |
| Ceros a la izquierda | Nunca (3) | Sí, donde está definido ("03") |
| Caso de uso | Necesitar un número para cálculos/comparaciones | Necesitar una cadena formateada y legible |
<?php
$timestamp = mktime(9, 5, 0, 4, 2, 2024);
echo date('m', $timestamp) . "\n"; // "04" (string, zero-padded)
echo idate('m', $timestamp) . "\n"; // 4 (integer, no padding)Cuándo usarlo
Recurre a idate() cuando necesites un componente de fecha/hora como número — por ejemplo para construir un contador, comparar dos valores, indexar en un array, o utilizar el resultado en cálculos posteriores. Si tu objetivo es mostrar una fecha u hora con formato, usa date() (o strtotime() para convertir texto en un timestamp primero).
Errores comunes
- Sin formatos de múltiples caracteres.
idate('Y-m-d')no funciona — genera una advertencia y devuelvefalse. Llama aidate()una vez por componente, o usadate(). - Sin ceros a la izquierda. No confíes en
idate()para obtener salida de ancho fijo; siempre elimina el relleno. falseparece0. En caso de error,idate()devuelvefalse, que es igual de forma laxa a0. Usa una comprobación estricta (=== false) si un0real (como un domingo dew) es un resultado válido.
Funciones relacionadas
date()— formatea un timestamp como cadena.mktime()— construye un timestamp Unix a partir de partes de fecha/hora.strtotime()— convierte una cadena de fecha en inglés en un timestamp.time()— obtiene el timestamp Unix actual.