Especificamente, sumar y restar fechas, DateTime::add y DateTime:sub, ni sus equivalentes en procedural date_add() y date_sub.
Esto implicó una recodificación (aunque no tan larga) y la creación de funciones que permitiran hacer las operaciones con una facilidad parecida a la de las funciones no soportadas.
Para resolver el problema, en una librería general codifiqué funciones para agregar las fechas, sean positivas o negativas, eliminando la necesidad de tener un date_add y un date_sub. Una función por cada intervalo que necesitaba, como lo maneja C#.
A continuación expongo un ejemplo de la función para agregar días.
/**
*
* Agrega dias a una fecha
* @param datetime $date
* @param int $days
* @return DateTime
*/
function add_days($date, $days)
{
// Inicializamos el símbolo, como "más" ( + )
$symbol = '+';
// Si días es menor a 0, es decir, negativo
if ( $days < 0 )
{
// Configuramos el símbolo como "menos" ( - )
$symbol = '-';
}
// Hacemos la operación y la guardamos en result
// Convirtiendo a UNIXTIME mediante strtotime
// el intervalo y la fecha
$result = strtotime (
'+' . $days . ' day' ,
strtotime (
date_format($date, 'Y-m-d')
)
);
// Regresamos una fecha, a partir del resultado
// transformado a formato Y-m-d
return date_create( date( 'Y-m-d', $result ) );
} // end function add_days
No hay comentarios:
Publicar un comentario