lunes, 18 de enero de 2016

PHP: Fechas: Funciones, Formatos y Validaciones



En esta oportunidad 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:
ClaveContenido
secondsNumero de segundos de la hora actual
minutesNumero de minutos de la hora actual
hoursNumero de horas de la hora actual
mdayDía correspondiente del mes
wdayDía de la semana en valor numérico(empezando por 0)
monMes del año en valor numerico.Del 1 al 12.
yearValor numérico del año
ydayDía del año en valor numérico
weekdayCadena de caracteres que contiene el día de la semana(en ingles)
monthCadena de caracteres que contiene el mes del año(en ingles)
0Marca 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:
ÍndiceClaveContenido
0tm_secNumero de segundos de la fecha indicada
1tm_minNumero de minutos de la fecha indicada
2tm_hourNumero de horas de la fecha indicada
3tm_mdayDía correspondiente del mes
4tm_wdayDía de la semana en valor numérico(empezando por 0)
5tm_monMes del año en valor numerico.Del 0 al 11.
6tm_yearValor numérico del año.(se ve afectado por el efecto 2000)
7tm_ydayDía del año en valor numérico
8tm_isdstIndica si esta activado el efecto del cambio de hora.
Formatos de fechas
Las funciones vistas anteriormente nos permitían convertir el valor entero de la fecha en un valor mas fácilmente entendible, aunque para poder acceder a dicha información hay que pasar por el paso previo de obtener una matriz. Para evitar ese paso intermedio, PHP pone a tu disposición la funcióndate(formato,marca_tiempo);
Esta función nos devuelve una cadena de caracteres que se corresponde con una fecha a la que se ha aplicado un determinado formato. Para definir el formato de la fecha se dispone de las siguientes opciones:

OpciónDescripción
aHace que en la hora aparezca la cadena am o pm
AHace que en la hora aparezca la cadena AM o PM
dDía del mes con dos dígitos desde 01 a 31
DDía de la semana como cadena de tres letras(en ingles).Ejemplo: “Mon”
FNombre del mes completo como una cadena de caracteres.Ejemplo: “March”
hHace que la hora aparezca en formato 01 a 12
HHace que la hora aparezca en formato 00 a 23
gHace que la hora aparezca en formato 1 a 12
GHace que la hora aparezca en formato 0 a 23
iHace que los minutos aparezcan en formato 00 a 59
jHace que el día aparezca en formato 1 a 31
l(L min)Día de la semana completo.Ejemplo: Monday
LEscribe 0 si no es año bisiesto y 1 si lo es
mHace que el mes aparezca en formato 01 a 12
MHace que el mes aparezca en formato 1 a 12
sHace que los segundos aparezcan en formato 00 a 59
SCadena de caracteres con el sufijo ordinal.Ejemplo: “th”,”nd”.
tNúmero de días del mes especificado de 28 a 31
UNúmero de segundos desde el comienzo de la “era UNIX”
wNúmero del día de la semana de 0 a 6
YAño con cuatro cifras
yAño con dos cifras
zDía del año de 0 a 365
ZObtiene 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ónDescripción
%aNombre del día de la semana abreviado en el idioma actual
%ANombre del día de la semana completo en el idioma actual
%bNombre del mes abreviado en el idioma actual
%BNombre del mes completo en el idioma actual
%cRepresentación de fecha y hora en el idioma actual
%dDía del mes en formato 01 a 31
%HHora como numero de 01 a 12
%IHora como numero de 01 a 12
%jDía del año como numero de 001 a 366
%mMes como numero de 01 a 12
%MMinuto en numero
%pam o pm según la hora dada
%SSegundos en numero
%UNumero de la semana del año como el primer domingo como primer día de la semana
%WNumero de la semana del año como el primer lunes como primer día de la semana
%wDía de la semana en numero de 0 a 6
%xRepresentación por defecto de la fecha sin hora
%XRepresentación por defecto de la hora sin fecha
%yAño en numero de 00 a 99
%YAño en numero de cuatro cifras
%ZNombre 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ónDescripción
LC_TYPEConversión de cadenas a configuración regional
LC_NUMERICSeparadores numéricos
LC_TIMEPara aplicar formatos de fecha y hora con strftime()
LC_ALLTodos 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

Conclusión

PHP, un lenguaje de programación orientado a la web tiene muchas funcionalidades que podemos emplear para crear valor a nuestros proyectos.
¡RECUERDA! en UneWeb tenemos 4 niveles de estudio para este útil lenguaje de programación , visita: http://www.uneweb.edu.ve/  ¡Éxitos!

No hay comentarios:

Publicar un comentario

Entradas populares