Fechas
En este capítulo
se estudiarán las funciones existentes en PHP para el empleo de
fechas. Este tipo de funciones existen en la mayoría de lenguajes
de programación y van orientadas a su obtención y representación
en diferentes formatos.
El tiempo en cualquier lenguaje
de programación se suele tomar con respecto al inicio de la "era
UNIX" que es el 1 de enero de 1970 a las 00:00:00.La función más
sencilla que se basa en esta marca de tiempo es la función time()
cuyo valor devuelto es el |
|
numero entero que representa la marca
de tiempo correspondiente al instante en que se ejecutó la función
con respecto a la era unix.
En algunas aplicaciones es necesario
poseer una marca de tiempo mas detallada y por ello usamos microtime()
que devuelve una cadena de caracteres con los segundos y microsegundos.
En caso de que quisiéremos
tener como valor de referencia la hora del ordenador desde el cual se ejecuta
emplearíamos la función gettimeofday()
en la cual pasaríamos como parámetro interno , sec
(para saber los segundos), usec (microsegundos), minuteswest
(nº segundos al oeste de greenwich) y dstime
(tipo de corrección en horarios de verano e invierno).
Estas funciones citadas anteriormente
son poco utilizadas ya que la existencia de otras funciones más
completas, como por ejemplo la función getdate()
que obtiene una matriz asociativa con la información de la fecha
y hora del sistema.
Los elementos
de dicha matriz son:
|
Clave
|
Contenido
|
|
seconds
|
Numero de segundos de la hora
actual |
|
minutes
|
Numero de minutos de la hora
actual |
|
hours
|
Numero de horas de la hora actual |
|
mday
|
Día correspondiente del
mes |
|
wday
|
Día de la semana en valor
numérico(empezando por 0) |
|
mon
|
Mes del año en valor numerico.Del
1 al 12. |
|
year
|
Valor numérico del año |
|
yday
|
Día del año en
valor numérico |
|
weekday
|
Cadena de caracteres que contiene
el día de la semana(en ingles) |
|
month
|
Cadena de caracteres que contiene
el mes del año(en ingles) |
|
0
|
Marca de tiempo obtenida por
la función getdate() |
Si no le pasamos
ningún parámetro a la función entonces se considera
la hora actual del sistema y si se recibe como parámetro un numero
entero entonces lo convierte a la fecha correspondiente.
Otra función
para obtener la hora es la función localtime
(marca_tiempo,tipo_matriz);
cuyos valores pasamos a comentar a continuación: |
|
|
Opción
|
Descripción
|
|
a
|
Hace que en la hora aparezca
la cadena am o pm |
|
A
|
Hace que en la hora aparezca
la cadena AM o PM |
|
d
|
Día del mes con dos dígitos
desde 01 a 31 |
|
D
|
Día de la semana como
cadena de tres letras(en ingles).Ejemplo: "Mon" |
|
F
|
Nombre del mes completo como
una cadena de caracteres.Ejemplo: "March" |
|
h
|
Hace que la hora aparezca en
formato 01 a 12 |
|
H
|
Hace que la hora aparezca en
formato 00 a 23 |
|
g
|
Hace que la hora aparezca en
formato 1 a 12 |
|
G
|
Hace que la hora aparezca en
formato 0 a 23 |
|
i
|
Hace que los minutos aparezcan
en formato 00 a 59 |
|
j
|
Hace que el día aparezca
en formato 1 a 31 |
|
l(L
min)
|
Día de la semana completo.Ejemplo:
Monday |
|
L
|
Escribe 0 si no es año
bisiesto y 1 si lo es |
|
m
|
Hace que el mes aparezca en formato
01 a 12 |
|
M
|
Hace que el mes aparezca en formato
1 a 12 |
|
s
|
Hace que los segundos aparezcan
en formato 00 a 59 |
|
S
|
Cadena de caracteres con el sufijo
ordinal.Ejemplo: "th","nd". |
|
t
|
Número de días
del mes especificado de 28 a 31 |
|
U
|
Número de segundos desde
el comienzo de la "era UNIX" |
|
w
|
Número del día
de la semana de 0 a 6 |
|
Y
|
Año con cuatro cifras |
|
y
|
Año con dos cifras |
|
z
|
Día del año de
0 a 365 |
|
Z
|
Obtiene la diferencia horaria
en segundos con respecto al GMT |
La función strftime()
representa otra posibilidad para aplicar formatos a una fecha. Esta función
utiliza las convenciones locales de la máquina desde la que se ejecuta
el script para devolver una cadena con el formato definido en el idioma
seleccionado. Su formato queda definido por los siguientes valores:
|
Opción
|
Descripción
|
|
%a
|
Nombre del día de la semana
abreviado en el idioma actual |
|
%A
|
Nombre del día de la semana
completo en el idioma actual |
|
%b
|
Nombre del mes abreviado en el
idioma actual |
|
%B
|
Nombre del mes completo en el
idioma actual |
|
%c
|
Representación de fecha
y hora en el idioma actual |
|
%d
|
Día del mes en formato
01 a 31 |
|
%H
|
Hora como numero de 01 a 12 |
|
%I
|
Hace que la hora aparezca en
formato 1 a 12 |
|
%j
|
Día del año como
numero de 001 a 366 |
|
%m
|
Mes como numero de 01 a 12 |
|
%M
|
Minuto en numero |
|
%p
|
am o pm según la hora
dada |
|
%S
|
Segundos en numero |
|
%U
|
Numero de la semana del año
como el primer domingo como primer día de la semana |
|
%W
|
Numero de la semana del año
como el primer lunes como primer día de la semana |
|
%w
|
Día de la semana en numero
de 0 a 6 |
|
%x
|
Representación por defecto
de la fecha sin hora |
|
%X
|
Representación por defecto
de la hora sin fecha |
|
%y
|
Año en numero de 00 a
99 |
|
%Y
|
Año en numero de cuatro
cifras |
|
%Z
|
Nombre o abreviatura de la zona
horaria |
|
%%
|
Caracter % |
Estableciendo horas y fechas
Una vez conocida la forma de obtener
la fecha actual, es necesario disponer de una forma de poder fijar una
determinada hora para establecer por ejemplo la fecha de caducidad de una
cookie, es decir, la forma de obtener una marca de tiempo correspondiente
a una determinada hora.
Para ello
PHP dispone de dos funciones que son mktime()
y gmmktime() cuyo funcionamiento explicaremos
a continuación:
La función mktime
(hora,minuto,segundo,mes
,dia,año,[ajuste->0
horario de verano y 1 invierno]); nos devuelve un valor entero
que representa la marca de tiempo UNIX de una determinada fecha. Cada uno
de los valores mencionados puede omitirse siempre y cuando a partir del
valor omitido no se representen mas valores a su derecha. |
|
La función gmmktime() funciona
de la misma forma lo que considera que los parámetros representan
una hora GMT.
La función setlocale(categoria,pais);
nos permite establecer el idioma en los que aparecerán la fecha,hora,etc.
Las categorías posibles son:
Opción Descripción
LC_TYPE
Conversión de cadenas a configuración regional
LC_NUMERIC
Separadores numéricos
LC_TIME
Para aplicar formatos de fecha y hora con strftime()
LC_ALL
Todos los anteriores
Validación de fechas
Existen numerosas ocasiones en las
que es necesario la creación de un sistema para comprobar si la
fecha introducida por el usuario es valida o no. Para ello PHP nos brinda
dos funciones capaces de realizar dicha comprobación:
checkdate(mes,dia,año);
Comprueba que la fecha introducida sea correcta .
strtotime(cadena_fecha);
Comprueba que la cadena de fecha sea correcta. Para ello la fecha debe
estar en formato ingles, es decir, mm/dd/aa
|