domingo, 8 de febrero de 2009

Manual de PHP 40. Funciones: Funciones de fecha

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.

Como puedes ver en el ejemplo que hay al final de la tabla 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.

¡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.

Parámetros de la función date()

Parámetros de formato de date()
Valor Funcionalidad Sintaxis Resultado
A AM-PM date("A") AM
a am-pm date("a") am
d Día del mes en formato de 2 dígitos date("d") 08
j día del mes sin ceros a la izquierda date("j") 8
F Nombre del mes (texto completo) date("F") February
M Nombre del mes (3 letras) date("M") Feb
m Nº del mes (de 01 a 12) con dos dígitos date("m") 02
n Nº del mes (de 1 a 12) sin dos dígitos date("n") 2
Y Año con cuatro dígitos date("Y") 2009
y Año con dos dígitos date("y") 09
G Hora 0-23 sin ceros a la izquierda date("G") 9
H Hora 0-23 con dos dígitos date("H") 09
g Hora 1-12 sin ceros a la izquierda date("g") 9
h Hora 01-12 con dos dígitos date("h") 09
i Minutos de 00 a 59 con dos dígitos date("i") 20
s Segundos de 00 a 59 con dos dígitos date("s") 43
l día semana en texto completo date("l") Sunday
D Día de la semana (tres letras) date("D") Sun
w día semana de 0 (domingo) a 6 (sabado) date("w") 0
z días transcurridos del año actual date("z") 38
t Número de días mes actual date("t") 28
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") 1234081243
S Sufijo ordinal inglés date("S") th



date (formato, número)

Esta función nos devuelve la fecha y hora del tiempo Unix (¿recuerdas aquello tan fino de Unix Epoch?) indicado en el parámetro número.

Recuerda también que ese número indica segundos contados a partir de la 0:00:00 (GMT) del día 1 de Enero de 1970.



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.

gmdate (formato, número)

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

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í.

gettimeofday()

Esta función devuelve un array asociativo con los siguientes índices:
sec
El valor asociado a este índice del array recoge la hora actual (Unix Each) expresada en segundos
usec
El valor asociado a usec recoge la fracción en microsegundos de hora actual (Unix Each)
minuteswest
Devuelve los minutos al Oeste de Greenwich
dsttime()
Devuelve el tipo de corrección horaria según horarios de verano/invierno. El valor UNO corresponde a horario de verano, el valor CERO al de invierno y MENOS UNO en el caso en que sea desconocido.

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 el ejemplo.

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() y puedes verlos en el ejemplo.

microtime()

Esta función devuelve la fracción de microsegundos de la hora actual expresada en tiempo Unix.

time()

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

mktime (hora, min, seg, mes, día, año , horario)

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.

El parámetro horario es opcional y admite los valores 0 (horario de invierno), 1 (horario de verano).

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.



Un ejemplo de fecha actual:


<? echo "Son las ", date("h : i : s")," y hoy es ", date("j-n-Y")?>





devolvería:

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


<?"Fué a las ", date("h:i:s",456573426)," del ", date("j-n-Y",456573426) ?>




devolvería:


Ejemplos de la función gmdate()

Un ejemplo de fecha actual en hora GMT (observa la diferencia horaria):

<? echo "Son las ", gmdate("h : i : s")," y hoy es ", gmdate("j-n-Y")?>




devolvería:

Este otro ejemplo devolverá la fecha y hora GMT coincidente con el tiempo Unix 456.573.426.


<?"Fué a las ", gmdate("h:i:s",456573426)," del ", gmdate("j-n-Y",456573426) ?>



devolvería:


Checkdate()


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()


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


getdate()


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] 52
Este índice devuelve los minutos de la hora actual echo $s[minutes] 5
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] 8
Este índice devuelve el nº del día de la semana echo $s[wday] 0
Este índice devuelve el nº del mes echo $s[mon] 2
Este índice devuelve el año echo $s[year] 2009
Este índice devuelve nº del día en el año actual echo $s[yday] 38
Este índice devuelve el día de la semana echo $s[weekday] Sunday
Este índice devuelve el nombre del mes echo $s[month] February


getdate(número)


Ejemplos de getdate(número)
Funcionalidad Sintaxis Devuelve
Devuelve un array asociativo $s=getdate(125748);
echo $s;
Array
Este índice devuelve los segundos de la hora actual echo $s[seconds] 48
Este índice devuelve los minutos de la hora actual echo $s[minutes] 55
Este índice devuelve la hora de la hora actual echo $s[hours] 11
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


mktime()


Ejemplos de mktime()
H Min Sec Mes Día Año Horario Tiempo Unix Fecha
23 12 57 6 16 1973 0 109116777 23:12:57 16-Jun-1973
23 12 57 6 16 1973 1 109116777 22:12:57 16-Jun-1973
25 12 57 6 16 1973 1 109123977 00:12:57 17-Jun-1973
23 97 57 6 16 1973 1 109121877 23:37:57 16-Jun-1973
23 12 57 14 16 1973 1 130284777 22:12:57 16-Feb-1974
23 12 57 14 0 1973 1 128902377 22:12:57 31-Jan-1974
En los ejemplos puede verse como para valores fuera de rango (mes mayor de 12, minutos mayor de 60, etcétera) la función realiza la corrección correspondiente.








No hay comentarios: