Í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 AJAXFunciones 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") | AM |
| a | am-pm | date("a") | am |
| d | Día del mes en formato de 2 dígitos | date("d") | 23 |
| j | día del mes sin ceros a la izquierda | date("j") | 23 |
| 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") | 2012 |
| y | Año con dos dígitos | date("y") | 12 |
| G | Hora 0-23 sin ceros a la izquierda | date("G") | 6 |
| H | Hora 0-23 con dos dígitos | date("H") | 06 |
| g | Hora 1-12 sin ceros a la izquierda | date("g") | 6 |
| h | Hora 01-12 con dos dígitos | date("h") | 06 |
| i | Minutos de 00 a 59 con dos dígitos | date("i") | 04 |
| s | Segundos de 00 a 59 con dos dígitos | date("s") | 34 |
| l | día semana en texto completo | date("l") | Thursday |
| D | Día de la semana (tres letras) | date("D") | Thu |
| w | día semana de 0 (domingo) a 6 (sabado) | date("w") | 4 |
| z | días transcurridos del año actual | date("z") | 53 |
| t | Número de días mes actual | date("t") | 29 |
| L | Año actual bisiesto (1), no bisiesto (0) | date("L") | 1 |
| Z | Diferencia (seg.) horaria local con GMT | date("Z") | 3600 |
| U | Segundos Unix Epoch | date("U") | 1329973474 |
| S | Sufijo ordinal inglés | date("S") | rd |
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 06 : 04 : 34 y hoy es 23-2-2012Esta 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-1984Se 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 05 : 04 : 34 y hoy es 23-2-2012Los 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-1984Comprueba 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) | |
Esta función devuelve un array asociativo con los siguientes índices:
| Ejemplos de gettimeofday() | |
| Sintaxis | Devuelve |
| $z= gettimeofday(); echo $z; |
Array |
| echo $z['sec']; | 1329973474 |
| echo $z[usec]; | 810246 |
| echo $z['minuteswest'']; | -60 |
| echo $z['dsttime']; | 0 |
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'] | 34 |
| Este índice devuelve los minutos de la hora actual | echo $s['minutes'] | 4 |
| Este índice devuelve la hora de la hora actual | echo $s['hours'] | 6 |
| Este índice devuelve el día del mes actual | echo $s['mday'] | 23 |
| Este índice devuelve el nº del día de la semana | echo $s['wday'] | 4 |
| Este índice devuelve el nº del mes | echo $s['mon'] | 2 |
| Este índice devuelve el año | echo $s[year] | 2012 |
| Este índice devuelve nº del día en el año actual | echo $s['yday'] | 53 |
| Este índice devuelve el día de la semana | echo $s['weekday'] | Thursday |
| Este índice devuelve el nombre del mes | echo $s['month'] | February |
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 |
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 1329973474 segundos desde desde las cero horas del día 01-01-1970Esta 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.87875800 1329973474 de segundo de la hora actualDevuelve 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.