Funciones de fecha y
horaLa función date_default_timezone_set($identificador_de_zona_horaria) establece el huso horario que utilizan las funciones de fecha y hora. El manual de PHP contiene la lista de identificadores de zonas horarias válidas.
<?php |
<p>2007</p> |
Cuando la directiva error_reporting tiene establecido el valor E_STRICT, PHP genera un aviso si no se ha establecido el huso horario antes de utilizar cualquier función de fecha y hora.
<?php |
Strict Standards: date()
[function.date]: It is not safe to rely on the system's timezone
settings. Please use the date.timezone setting, the TZ environment
variable or the date_default_timezone_set() function. In case you
used any of those methods and you are still getting this warning, you
most likely misspelled the timezone identifier. We selected
'Europe/Paris' for '1.0/no DST' instead in
ejemplo.php on line 2
2007 |
La función date($formato) permite generar una cadena que incluye la fecha y/o la hora del sistema. La función date espera uno o dos argumentos. El primer argumento define el formato de la cadena y el segundo el instante que se quiere convertir (si no se indica el segundo argumento, la función trabaja con la fecha y hora actual del sistema).
Para definir el formato de la cadena se utilizan, entre otros, los siguientes caracteres:
| día | mes | año | |
|---|---|---|---|
| números con ceros delante | d | m | y (2 cifras) Y (4 cifras) |
| números sin ceros delante | j | n | |
| texto corto localizado (3 letras) | D | M | |
| texto largo localizado (nombre completo) | l | F |
| hora (12h) | hora (24 h) | minutos | segundos | |
|---|---|---|---|---|
| números con ceros delante | h | H | i | s |
| números sin ceros delante | g | G |
| <?php print "<p>Ejemplo 1: ".date("d/m/y H:i:s")."</p>"; print "<p>Ejemplo 2: ".date("l, F jS Y ")."</p>"; ?> |
Ejemplo 1: 03/03/05 13:43:48 Ejemplo 2: Thursday, March 3rd 2005 |
Falta incluir un ejemplo con localización
Por completar
La funcion localtime() devuelve una matriz con información detallada de la fecha y hora actual. Para que devuelva esa información de la hora actual, se pasa como argumento la función time(). El segundo argumento indica si la matriz tiene índices asociativos.
| <?php $fecha_actual = localtime(time(),1); $anyo_actual = $fecha_actual['tm_year'] + 1900; $mes_actual = $fecha_actual['tm_mon'] + 1; $dia_actual = $fecha_actual['tm_mday']; print "<p>Hoy es el $dia_actual/$mes_actual/$anyo_actual.</p>"; ?> |
Hoy es el 10/3/2005. |
La función checkdate($dia, $mes, $anyo) devuelve el valor true si la fecha enviada es correcta en el calendario Gregoriano y false si no lo es.
| <?php $dia = 29; $mes = 2; $anyo = 2008; if (checkdate($mes, $dia, $anyo)) { print "<p>El día $dia/$mes/$anyo existe.</p>"; } else { print "<p>El día $dia/$mes/$anyo no existe.</p>"; } ?> |
El día 29/2/2008 existe. |
| <?php $dia = 29; $mes = 2; $anyo = 2007; if (checkdate($mes, $dia, $anyo)) { print "<p>El día $dia/$mes/$anyo existe.</p>"; } else { print "<p>El día $dia/$mes/$anyo no existe.</p>"; } ?> |
El día 29/2/2007 no existe. |
Hay que tener en cuenta que el calendario Gregoriano se estableció (en algunos países) a partir del 15 de octubre de 1582, por lo que no tiene sentido aplicar esta función a fechas anteriores a esa fecha. Por ejemplo, la función checkdate() no tiene en cuenta que hay unos días (del 5 al 14 de octubre de 1582) que no existieron en el calendario Gregoriano. Por otra parte, si el año es negativo o cero, la función checkdate() devuelve siempre false.
| <?php $dia = 12; $mes = 10; $anyo = 1582; if (checkdate($mes, $dia, $anyo)) { print "<p>El día $dia/$mes/$anyo existe.</p>"; } else { print "<p>El día $dia/$mes/$anyo no existe.</p>"; } ?> |
El día 12/10/1582 existe. |
| <?php $dia = 1; $mes = 1; $anyo = 0; if (checkdate($mes, $dia, $anyo)) { print "<p>El día $dia/$mes/$anyo existe.</p>"; } else { print "<p>El día $dia/$mes/$anyo no existe.</p>"; } ?> |
El día 1/1/0 no existe. |
Para convertir las cadenas de fechas del formato dd-mm-aaaa al formato aaaa-mm-dd y viceversa se pueden definir estas funciones:
function fechaDma($amd)
{
return substr($amd, 8, 2)."-".substr($amd, 5, 2)."-".substr($amd, 0, 4);
}
function fechaAmd($dma)
{
return substr($dma, 7, 4)."-".substr($dma, 4, 2)."-".substr($dma, 1, 2);
}
Esta obra está bajo una licencia de Creative
Commons.