Ver índice
Funciones de fecha

        Ocultar índice  

   Índice de contenidos
   Instalación en Windows
   Instalación en Ubuntu
   Servidores seguros
   Páginas dinámicas
   Sintaxis básica
   Operaciones
   Arrays
   Formatos de presentación
   Operadores
   Bucles
   Extraer y ord. información
   Funciones
   Ficheros externos
   Imágenes dinámicas
   Gestión de directorios
   Cookies y sesiones
   Clases y objetos
   Ficheros en formato PDF
   Bases de datos MySQL
   PHP y XML
   PDO - Bases SQLite / MySQL
   MySQL a traves de misqli
   Algo de JavaScript y AJAX


Funciones de fecha

PHP es pródigo en cuanto a posibilidades de manejo de fechas y horas. Para ello, cuenta, entre otras, con las siguientes funciones:

date (cadena de formato)

Devuelve valores de fecha y hora actuales utilizando los parámetros que se señalan en la tabla para establecer el formato de salida de los datos. Dentro de la misma cadena de formato puede contener tantos parámetros como se deseen.

Parámetros de formato de date()
Valor Funcionalidad Sintaxis Resultado
A   AM-PM date("A") PM
a   am-pm date("a") pm
d   Día del mes en formato de 2 dígitos date("d") 21
j   día del mes sin ceros a la izquierda date("j") 21
F   Nombre del mes (texto completo) date("F") November
M   Nombre del mes (3 letras) date("M") Nov
m   Nº del mes (de 01 a 12) con dos dígitos date("m") 11
n   Nº del mes (de 1 a 12) sin dos dígitos date("n") 11
Y   Año con cuatro dígitos date("Y") 2017
y   Año con dos dígitos date("y") 17
G   Hora 0-23 sin ceros a la izquierda date("G") 22
H   Hora 0-23 con dos dígitos date("H") 22
g   Hora 1-12 sin ceros a la izquierda date("g") 10
h   Hora 01-12 con dos dígitos date("h") 10
i   Minutos de 00 a 59 con dos dígitos date("i") 22
s   Segundos de 00 a 59 con dos dígitos date("s") 27
l   día semana en texto completo date("l") Tuesday
D   Día de la semana (tres letras) date("D") Tue
w   día semana de 0 (domingo) a 6 (sabado) date("w") 2
z   días transcurridos del año actual date("z") 324
t   Número de días mes actual date("t") 30
L   Año actual bisiesto (1), no bisiesto (0) date("L") 0
Z   Diferencia (seg.) horaria local con GMT date("Z") 3600
U   Segundos Unix Epoch date("U") 1511299347
S   Sufijo ordinal inglés date("S") st

Como puedes ver en este ejemplo, respeta los caracteres separadores (espacios, dos puntos, guiones, etcétera) que se hubieran incluido en la cadena de formato siempre que no coincidan con ninguno de los parámetros PHP para esta cadena.

<?php echo "Son las ", date("h : i : s")," y hoy es ", date("j-n-Y")?> devolvería: Son las 10 : 22 : 27 y hoy es 21-11-2017

  ¡Cuidado!  

No olvides que PHP se ejecuta en el servidor que suele estar en un ordenador remoto. Por lo tanto, fecha y hora locales se refieren al lugar donde está instalado el servidor y que en nuestro caso servidor y cliente coinciden en un mismo equipo y coincidirán la hora del sistema con la del servidor.

Pero si alojaras esta página en un hosting australiano, PHP nos devolvería los valores con hora y fecha de las antípodas.

date (formato, número)

Esta función nos devuelve la fecha y hora del tiempo Unix indicado en el parámetro número. Recuerda que ese número indica segundos contados a partir de la 0:00:00 (GMT) del día 1 de Enero de 1970.

Este script devolverá la fecha y hora en la que el tiempo Unix era de 456.573.426 segundos.

<?php echo "Fué a las ", date("h:i:s",456073426)," del ", date("j-n-Y",456073426) ?> devolvería: Fué a las 05 : 03 : 46 del 14-6-1984

gmdate(cadena formato)

Se comporta de forma idéntica a date() con la única diferencia de que devuelve la hora y fecha GMT. Si te fijas en el ejemplo habrá una o dos horas de diferencia según accedas a esta página en verano o invierno.

La fecha actual en hora GMT (observa la diferencia horaria):

<?php echo "Son las ", gmdate("h : i : s")," y hoy es ", gmdate("j-n-Y")?> devuelve: Son las 09 : 22 : 27 y hoy es 21-11-2017

gmdate (formato, número)

Los mismos comentarios que con el caso anterior. La única diferencia es que devuelve hora GMT.

La fecha y hora GMT coincidente con el tiempo Unix 456.073.426 es:

<?php echo "Fué a las ", gmdate("h:i:s",456073426)," del ", gmdate("j-n-Y",456073426) ?> devolvería: Fué a las 03 : 03 : 46 del 20-6-1984

checkdate(mes,día,año)

Comprueba si los valores de los parámetros mes están dentro del rango permitido (de 1 a 12), si el parámetro día es un valor válido para ese mes (considera años bisiestos) y si el valor del año pertenece al rango 0 a 32767.

Devuelve VERDADERO si los valores corresponden a una fecha correcta y FALSO en el caso de que no ocurra así.

Ejemplos de checkdate()
Mes Día Año Sintaxis Devuelve
10 32 1987 Checkdate(10,32,1987)   
10 31 1987 Checkdate(10,31,1987)  1 
2 29 2000 Checkdate(2,29,2000)  1 
2 29 2001 Checkdate(2,29,2001)   

gettimeofday()

Esta función devuelve un array asociativo con los siguientes índices:


Ejemplos de gettimeofday()
Sintaxis Devuelve
$z= gettimeofday();
echo $z;
Array
echo $z['sec']; 1511299347
echo $z[usec]; 883482
echo $z['minuteswest'']; -60
echo $z['dsttime']; 0

getdate()

Devuelve un array asociativo con parámetros de la fecha actual. Los índices de este array y sus valores son los que puedes ver en la tabla.

Ejemplos de getdate()
Funcionalidad Sintaxis Devuelve
Devuelve un array asociativo $s=getdate();
echo $s;
Array
Este índice devuelve los segundos de la hora actual echo $s['seconds'] 27
Este índice devuelve los minutos de la hora actual echo $s['minutes'] 22
Este índice devuelve la hora de la hora actual echo $s['hours'] 22
Este índice devuelve el día del mes actual echo $s['mday'] 21
Este índice devuelve el nº del día de la semana echo $s['wday'] 2
Este índice devuelve el nº del mes echo $s['mon'] 11
Este índice devuelve el año echo $s[year] 2017
Este índice devuelve nº del día en el año actual echo $s['yday'] 324
Este índice devuelve el día de la semana echo $s['weekday'] Tuesday
Este índice devuelve el nombre del mes echo $s['month'] November

getdate(número)

Interpreta el número como una fecha Unix Each (segundos transcurridos desde el día 1 de Enero de 1970) y devuelve un array asociativo con los valores relativos a esa fecha. Los índices de este array y sus valores son idénticos a los de getdate() tal como puedes ver en esta tabla.

Ejemplos de getdate(número)
Funcionalidad Sintaxis Devuelve
Devuelve un array asociativo $s=getdate(127648);
echo $s;
Array
Este índice devuelve los segundos de la hora actual echo $s['seconds'] 28
Este índice devuelve los minutos de la hora actual echo $s['minutes'] 27
Este índice devuelve la hora de la hora actual echo $s['hours'] 12
Este índice devuelve el día del mes actual echo $s['mday'] 2
Este índice devuelve el nº del día de la semana echo $s['wday'] 5
Este índice devuelve el nº del mes echo $s['mon'] 1
Este índice devuelve el año echo $s['year'] 1970
Este índice devuelve nº del día en el año actual echo $s['yday'] 1
Este índice devuelve el día de la semana echo $s['weekday'] Friday
Este índice devuelve el nombre del mes echo $s['month'] January

time()

Esta función devuelve la hora actual en segundos expresada en tiempo Unix.

<?php print "Han transcurrido ".time(). " segundos desde las cero horas del día 01-01-1970";?> devolvería: Han transcurrido 1511299347 segundos desde desde las cero horas del día 01-01-1970

microtime()

Esta función devuelve una cadena formada la fracción de microsegundos de la hora actual expresada en tiempo Unix seguida de un espacio y de los segundos del tiempo Unix.

<?php print "Estamos en la fracción ".microtime(). " de segundo de la hora actual";?> devolvería: Estamos en la fracción 0.88356400 1511299347 de segundo de la hora actual

mktime (hora, minuto, segundo, mes, día, año)

Devuelve el tiempo Unix de la fecha pasada como parámetro a la función. Es fundamental mantener la secuencia de los datos. Si se omiten argumentos (sólo pueden omitirse por la derecha) tomará los de la fecha actual.

Cuando el parámetro día es cero devuelve el último día del mes anterior, pero si pasamos cero como parámetro de mes nos dará un error.

Ejemplos de mktime()
H Min Sec Mes Día Año Tiempo Unix Fecha
23 12 57 6 16 1973 109116777 23:12:57 16-Jun-1973
23 12 57 6 16 1973 109116777 23:12:57 16-Jun-1973
25 12 57 6 16 1973 109123977 01:12:57 17-Jun-1973
23 97 57 6 16 1973 109121877 00:37:57 17-Jun-1973
23 12 57 14 16 1973 130284777 23:12:57 16-Feb-1974
23 12 57 14 0 1973 128902377 23:12:57 31-Jan-1974

En los ejemplos de esta tabla puede verse cómo para valores fuera de rango (mes mayor de 12, minutos mayor de 60, etcétera) la función realiza la corrección correspondiente.

  ¡Cuidado!  

En versiones anteriores a PHP 5.3.3 la función mktime incluía un séptimo parámetro (que se agregaba detrás de valor año) relativo a horarios de verano ó invierno.
Ese parámetro era 0 si la fecha corresponde a horario de invierno y 1 ó -1 (según versiones) en el caso de horario de verano. Actualmente esa opción es considerada obsoleta por PHP. Por esta razón no usamos ese séptimo parámetro en nuestros ejemplos.