December 30, 2010

Manejo de fechas en PHP5

Una búsqueda rápida sobre manejo de fechas en PHP dan como resultado documentación y tutoriales sobre la función date(). Si bien es extremadamente útil para los casos en que queremos mostrar fechas rápidamente, hay veces que se utiliza en conjunto con otras funciones, para realizar cálculos con las fechas y no es lo más apropiado ni lo más fácil.

En parte la culpa es de PHP, que introdujo el objecto DateTime y DateTimeZone recién en la versión 5.2, luego de soportar el paradigma orientado a objetos.

Van algunos ejemplos de como utilizar la clase DateTime para crear objetos tipo fecha, realizar algunas operaciones y formatearlo para mostrar por pantalla.

<?php

//Setear la zona horaria.
date_default_timezone_set('America/Montevideo');

$ahora = new DateTime("now");

//format: utiliza los mismos formatos que la función date().
echo $ahora->format(DATE_RSS); //Formato de fecha RSS.
echo '<br/>';
echo $ahora->format('d/m/Y'); //Formato local d/m/a
echo '<br/>';

//Crear una fecha según un formato especificado. PHP >= 5.3.0
$feb = DateTime::createFromFormat('j-M-Y', '5-Feb-2010');

//Diferencia entre dos fechas. Devuelve un objeto DateInterval. PHP>=5.3.0
$diferencia = $ahora->diff($feb);

echo $diferencia->format('%d días'); echo '<br/>';

//Añadir cantidad de días/meses/etc a una fecha. PHP>=5.3.0
$ahora->add(DateInterval::createFromDateString('10 days')); //resta 10 días.

echo $ahora->format('d/m/Y'); echo '<br/>';

//Otra alternativa para modificar la fecha. PHP>=5.2.0
$ahora->modify('+5 days');
echo $ahora->format('d/m/Y'); echo '<br/>';

Descargar ejemplo: [download id=”5″]

Enlaces