Volver al índiceFunciones de fecha y hora


Función date_default_timezone_set()

La 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
date_default_timezone_set("Europe/Madrid");
print "<p>".date('Y')."</p>";
?>

<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
print "<p>".date('Y')."</p>";
?>

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

Volver al principio


Función date()

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

Volver al principio


Función strftime()

Por completar

Volver al principio


Función localtime()

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.

Volver al principio


Función checkdate()

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.

Volver al principio


Convertir cadenas de fechas

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);
}

Volver al principio

Esta página forma parte del curso "Páginas web con PHP" disponible en http://www.mclibre.org
Autor: Bartolomé Sintes Marco
Última modificación de esta página: 11 de febrero de 2008

Creative Commons License
Esta obra está bajo una licencia de Creative Commons.