SQL Server tiene 2 funciones buenisimas para el calculo de fechas, DATEADD y DATEDIFF.
Emulando el comportamiento de estas funciones (probablemente de forma mala), les presento mi adaptación de estos métodos a PHP.
#------------------
# add values to a date array and return the new date!.
function dateAdd($date,$p_param, $value){
return genericDateOperation($date,$p_param,$value,1);
}
#------------------
# remove values to a date array and return the new date!.
function dateDiff($date,$p_param,$value){
return genericDateOperation($date,$p_param,$value,-1);
}
#------------------
# generic operation date function
function genericDateOperation($date,$p_param,$value,$operation){
$arr = getDateArray($date);
$arr[$p_param] = $arr[$p_param] + ($value*$operation);
return getDateFromArray($arr);
}
Funciones auxiliares
Esto funciona gracias a la función mktime
#------------------
# return array from a date.
function getDateFromArray($array){
$temp = mktime( $array['hour'],
$array['minute'],
$array['second'],
$array['month'],
$array['day'],
$array['year']);
return date(getDateFormat(),$temp);
}
estas 2 funciones que siguen son dependientes, si se cambia el formato de la fecha (método getFormat), se debería cambiar la forma de obtener el array.
#------------------
# return array from a date with format Y-m-d h:i:s
function getDateArray($date){
$arr['year'] = substr($date,0,4);
$arr['month'] = substr($date,5,2);
$arr['day'] = substr($date,8,2);
$arr['hour'] = substr($date,11,2);
$arr['minute'] = substr($date,14,2);
$arr['second'] = substr($date,17,2);
return $arr;
}
#------------------
# return mySQL format date
function getDateFormat(){
return "Y-m-d h:i:s";
}
de mas esta decir que $p_param puede ser year, month, day, hour,minute o second.
Suscribirse a:
Enviar comentarios (Atom)
No hay comentarios:
Publicar un comentario