PHP: imprescindible para crear páginas web de modo profesional
Y ahora tambien aprende a programar en C++ con Aprende Web C++
y entérate de las novedades o deja un comentario.
última modificación: 13-07-2018.
Visitas este mes: 27
Visitas el mes pasado: 58
Mi agradecimiento a los siguientes sitios en los que me he basado para la elaboración de este manual.:
Por elegir aprende-web
Aprende-web está diseñado a partir de los lenguajes que aquí mismo se enseñan.
By Anyelguti
Para el control del tiempo, este viene dado por un número que es la Marca de tiempo Unix. Esta indica el número de segundos transcurridos desde el 1 de enero de 1970 a las 0h. 0m. 0s. hora GTM (internacional medida en Greenwich). Las fechas anteriores al 1-enero-1970 dan como Marca de tiempo un número negativo.
De esta manera a cada fecha o instante (a cada segundo) le corresponde un número de Marca de tiempo Unix, este número es la base para poder hacer cálculos con fechas.
Esta función devuleve la marca de tiempo Unix para la fecha actual (en el momento de cargarse la página). La función no tiene argumentos. Ejemplo:
echo "Marca de tiempo Unix para la fecha actual: ".time();
Lo cual lo veremos así:
Marca de tiempo Unix para la fecha actual: 1680268191Esta función devuelve la marca de tiempo Unix para una fecha concreta, la cual es pasada en los argumentos de la función, los argumentos deben rellenarse con números, y en el siguiente orden, hora, minuto, segundo, mes, día, año. Podemos dejar vacíos los argumentos de derecha a izquierda, en ese caso tomarán el valor de la fecha actual. Tanto esta función como la anterior tienen en cuenta las diferencias horarias locales, de manera que nos dará el timpo Unix para la fecha y hora del lugar en que estamos. Ejemplo:
echo "Tiempo Unix para el 1-Marzo-2000 a las 12h. 0m. 0s. = " . mktime(12,0,0,3,1,2000);
Lo cual nos dará el siguiente resultado.
Tiempo Unix para el 1-Marzo-2000 a las 12h. 0m. 0s. = 951908400Esta función al igual que la anterior devuelve la Marca de tiempo Unix para una fecha concreta, pero la fecha es tomada como una hora GTM (hora internacional), es decir no tiene en cuenta las diferencias horarias locales. Ejemplo:
echo "Inicio del tiempo Unix. fecha 1-1-1970, 0h. 0m. 0s. = " . gmmktime(0,0,0,1,1,1970);
Esto nos dará el siguiente resultado:
Inicio del tiempo Unix. fecha 1-1-1970, 0h. 0m. 0s. = 0Una vez que tenemos una fecha en tiempo Unix, lo que nos interesa es poder mostrarla en pantalla en distintos formatos, para ello utilizaremos la función date()
Esta función muestra en pantalla una fecha según el formato epecificado en el primer argumento. El segundo argumento es la marca de tiempo Unix de la fecha a mostrar, si se omite muestra la fecha actual.
Formato de fechas para date()
Como hemos dicho el primer argumento de la función es una cadena que indica el formato que debe tener la fecha. Una serie de letras indican el tipo de elemento a mostrar, (hora, día, mes, ...), entre ellas podemos poner comas, puntos, guiones, espacio en blanco, etc. de la siguiente manera: echo date("d-m-Y");.
En este ejemplo nos dará la fecha actual (ya que no hay segundo argumento), en la que se muestran, separados por guiones, el día (d), el mes en número con 2 dígitos (m), y el año con cuatro dígitos (Y) :
31-03-2023Los distintos elementos que podemos poner para definir el formato de fecha en el primer argumento son por los siguientes caracteres, que nos darán los siguientes valores:
Caracter | Descripción | Valores devueltos |
---|---|---|
Día | ------- | ------- |
d | Día del mes. 2 dígitos, con 0 inicial | 01 a 31 |
j | Día del mes sin 0 inicial | 1 a 31 |
Semana | ------- | ------- |
D | Dia de la semana abreviado (inglés, 3 letras) | Mon a Sun |
l (ele minúscula) | Día de la semana completo (inglés) | Sunday a Saturday |
N | Número del día del la semana | 1 (lun) a 7 (dom) |
w | Número del día del la semana | 0 (dom) a 6 (sáb) |
W | Semanas transcurridas del año | 1 a 52 ó 53 |
Mes | ------- | ------- |
m | Número de mes con 0 inicial | 01 a 12 |
n | Número de mes sin 0 inicial | 1 a 12 |
F | Mes (texto en inglés) | January a December |
M | Mes abreviado. Tres letras (en inglés) | Jan a Dec |
t | Días que tiene el mes. | 28 a 31 |
año | ------- | ------- |
Y | Año en 4 dígitos | Ej.: 1990 ó 2003 |
y | Año en 2 dígitos | Ej.: 90 ó 03 |
L | Indica si el año es bisiesto | 1 (sí), 0 (no) |
Hora, min, seg. | ------- | ------- |
g | Hora de 1 a 12 con 0 inicial | 00 a 12 |
h | Hora de 1 a 12 sin 0 inicial | 1 a 12 |
G | Hora de 0 a 23 con 0 inicial | 00 a 23 |
H | Hora de 0 a 23 sin 0 inicial | 0 a 23 |
a | Ante meridiano o Post meridiano. Minúsculas. | am ó pm |
A | Ante meridiano o Post meridiano. Mayúsculas. | AM ó PM |
i | Minuto con 0 inicial | 00 a 59 |
s | Segundo con 0 inicial | 00 a 59 |
Fecha completa | ------- | ------- |
c | Fecha en formato ISO 8601 | Ej.: 2005-03-12T15:19:21+00:00 |
r | Fecha en formato RFC 2822 | Ej: Thu, 21 Dec 2000 16:01:07 +0200 |
Otros | --- | --- |
e | Identifica zona horaria | Ej.: Europe/Paris |
I (i mayúscula) | Indica si estamos en horario de verano. | 1 = sí, 0 = no |
P | Diferencia con la hora GTM (Greenwich) indica horas y minutos. | Ej: +02:00 |
Z | Diferencia con la zona horaria en segundos. | -43200 a 43200 |
U | Tiempo Unix de la fecha dada | igual que en mktime() |
Podemos hacer cualquier combinación de estos elementos para dar formato a la fecha. Dentro del argumento "formato", los caracteres que no están en esta lista serán impresos tal como son, si queremos imprimir algún caracter de la lista sin que sea interpretado como tal, debemos ponerle delante la barra invertida ej: \d imprimirá "d" y no el día del mes como está en la lista. Veamos algunos ejemplos con la fecha actual:
Código PHP | Resultado |
---|---|
echo date("l-j-F"); | Friday-31-March |
echo date("d-m-y"); | 31-03-23 |
echo "hora :".date("ga :i :s"); | hora :3pm :09 :51 |
echo date("D-n-M-Y :H-i-s.P \G\M\T."); | Fri-3-Mar-2023 :15-09-51.+02:00 GMT. |
Como puedes observar las posibles combinaciones para mostrar la fecha son numerosas, sin embargo surge el problema de que tanto los días de la semana como los meses aparecen en inglés. En el próximo apartado veremos cómo mostrar la fecha en el idioma local.
En primer lugar usaremos la función setlocale() para definir cual es la información que debe tratarse de forma local, y desde qué región o país.
Esta función tiene dos argumentos, el primero categoría indica cual es el tipo de información que debe tratarse de forma local , como aquí es la fecha el primer argumento será CL_TIME. En el segundo argumento pondremos en forma de cadena (entre comillas), el código del país o región local. Si ponemos una cadena vacía (""), se interpreta que es la región o país del ordenador que ejecuta el código. Escribimos la siguiente línea PHP:
setlocale(CL_Time,"");
Hay que tener en cuenta que esta función afecta también a otras páginas del sitio, por lo que si la definimos en una página, todas las demás páginas del sitio se verán afectadas de la misma manera.
Esta función permite definir la fecha en el idioma local, por lo que una vez definida la localización mediante la función anterior (setlocale()), nos dará la fecha en el idioma local. el segundo argumento es opcional, y si no se pone dará la fecha local actual. Lo pondremos para una fecha distinta, y pasaremos en él la marca de tiempo Unix de la fecha que queramos formatear.
Al igual que en la función date() el primer argumento marca el formato que queremos darle a la fecha, sólo que aquí los elementos que podemos poner para visualizar la fecha son distintos que en date(), los definimos en la siguiente tabla:
Caracter | Descripción | Valores devueltos |
---|---|---|
Día | -------- | -------- |
%d | Día del mes con 0 inicial | 01 a 31 | %e %#d en windows |
Día del mes sin 0 inicial. | 1 a 31 |
Semana | -------- | -------- |
%A | Día completo de la semana. | Lunes a domingo |
%a | Dia abreviado de la semana | lun a dom |
%w | Día de la semana en número. | 0 (Domingo) a 6 (Lunes) |
%U | Semana del año: la semana empieza en domingo. | 1 a 53 |
%W | Semana del año: la semana empieza en lunes. | 1 a 53 |
Mes | -------- | -------- |
%B | Nombre completo del mes. | Enero a Diciembre |
%b | Nombre abreviado del mes. | ene a dic |
%m | Mes en número con 0 inicial. | 01 a 12 | Año | -------- | -------- |
%C | Dos primeros dígitos del año | Ej.: 20 (para 2010) |
%y | Dos últimos dígitos del año. | 13 (para 2013) |
%Y | Año completo con lo cuatro dígitos. | 2010 |
Hora min. y seg. | -------- | -------- |
%H | Hora en formato 00 a 23. | 00 a 23 | %k | Hora en formato 0 a 23. (un dígito para menor de 10) | 0 a 23 |
%I | Hora en formato 01 a 12. | 01 a 12 |
%l ("L" minúscula) | Hora en formato 1 a 12. | 1 a 12 |
%M | Minuto en formato 00 a 59. | 00 a 59 |
%S | Segundo en formato 00 a 59. | 00 a 59 |
Otros | -------- | -------- |
%x | Fecha preferida, sin la hora. | ej: como "%d/%m/%Y" |
%X | Hora preferida, sin la fecha. | ej: como "%H:%M:%S" |
%c | Fecha y hora completa, preferida. | ej: "%d/%m/%Y H:%M:%S" |
%Z | Zona horaria local. | Ej: Europe/Madrid. |
Veamos un ejemplo de Fecha en formato local, lo primero que haremos será configurar el tiempo como local mediante la función setlocale():
setlocale(LC_TIME,"");
Después definimos el formato de tiempo mediante la funcion strftime():
echo strftime("%A, %d de %B de %Y. Hora: %H-%M-%S.");
El código anterior dará el siguiente resultado:
viernes, 31 de marzo de 2023. Hora: 15-09-51.El idioma y la hora devueltas corresponden a la configuración de idioma y hora locales del servidor de PHP, por lo que si hacemos la prueba en nuestro ordenador (en localhost), nos dará el resultado en el idioma y hora que tengamos configurado en el ordenador.
El probrema puede estar si al subir la página tenemos el servidor en otro idioma u otro país, con lo cual nos dará el idioma y la hora de ese país.
Para obtener la fecha en otros idiomas, tendremos que hacer la configuración local en el otro idioma. para ello lo marcaremos en el segundo argumento de la función setlocale():
setlocale(LC_TIME,"fra");
Ahora cuando formateemos la fecha con strftime(), nos saldrá en francés:
echo strftime("%A, %d - %B - %Y.");
El resultado ahora será:
vendredi, 31 - mars - 2023.La forma escribir el idioma no funciona igual en todos los sistemas, depende de la configuración del servidor, en algunos debemos poner las 2 primeras iniciales del idioma en inglés, en otros debemos poner el nombre completo del idioma en inglés, cada servidor y cada sistema operativo lo indica de una manera. podemos mirar códigos de diferentes países en la página ISO 639. La lista descrita en esta página no garantiza que el código que nos dan funcione con nuestro servidor de PHP, aunque muchas veces es el correcto . (podemos probar con el de dos letras, el de tres, o el nombre completo).
Podemos poner también una lista de opciones separadas por comas, o un array con las opciones, se tomará la primera de ellas que sea reconocida:
setlocale(LC_TIME,"fra,fre,french,fr");
En este ejemplo hemos puesto una lista de los posibles nombres que puede tener el servidor para el idioma francés. El código anterior deberá funcionar en la gran mayoría de servidores.
Para el español probaremos con el siguiente código, el cual deberá funcionar en la gran mayoría de servidores:
setlocale(LC_TIME,"esp,sp,spa,es,spanish");
Otro problema puede ser que si el servidor está en otra zona horaria, nos dará su hora, debemos en este caso cambiar la hora que nos da el servidor por la hora local en nuestra zona horaria. para ello utilizaremos la función date_default_timezone_set();
date_default_timezone_set("zona_horaria");
Como parámetro de la función pasaremos el nombre de la zona horaria en que queremos ver la fecha. Esta afectará a todas las fechas posteriores que escribamos a partir de esta función. Los nombres de las zonas horarias válidas puedes verlos en : Listado de Timezones soportados
Si queremos pasar la hora que nos da un servidor no español a la hora de españa, escribiremos la siguiente línea:
date_default_timezone_set("Europe/Madrid");
A partir de aquí las fechas vendrán con el horario local de Madrid.
En el siguiente enlace se muestra una página de ejemplo en la que se han usado las funciones anteriores para configurar la fecha según distintos lugares e idiomas.
Fecha y hora para un lugar e idioma.
El código de la página anterior incluido el PHP puedes verlo en el siguiente enlace:
Código para "Fecha y hora para un lugar e idioma".
En la siguiente página veremos una serie de funciones también importantes en PHP.
Sugerencias:
aprendeweb@aprende-web.net. Envia un
Visita nuestro blog par saber en qué estamos trabajando: Aprende Web Blog
Más sobre anyelguti en http://anyelguti.16mb.com