jueves, 9 de agosto de 2007

Función para calcular la diferencia de fecha de un registro con la fecha actual

Bueno por motivos de trabajo tenia que hacer algo asi, asi que me tube que cranear para hacerla, lo admito la mayor parte no la hice yo, solo la recopile y la modifique segun lo que necesitaba, solo tiene un detalle, me toma la diferencia con un dia menos, por lo que le sumo 1 al final de la funcion.
En verdad espero que a alguien mas le sirva.

Suerte.
function calculardiferenciafecha($fechaDocumento,$formato){
//1 es para formato de mysql
//0 es para fechas en formato php
if ($formato==1){
$fechaDocumento=dateconvert($fechaDocumento,1);
}
$fechaActual=date("j/m/Y");
$dia1=troceaFecha($fechaActual,1);
$mes1=troceaFecha($fechaActual,2);
$ano1=troceaFecha($fechaActual,3);
$dia2=troceaFecha($fechaDocumento,1);
$mes2=troceaFecha($fechaDocumento,2);
$ano2=troceaFecha($fechaDocumento,3);
//calculo timestam de las dos fechas
$timestamp1 = mktime(0,0,0,$mes1,$dia1,$ano1);
$timestamp2 = mktime(4,12,0,$mes2,$dia2,$ano2);
//resto a una fecha la otra
$segundos_diferencia = $timestamp1 - $timestamp2;
//echo $segundos_diferencia;
//convierto segundos en días
$dias_diferencia = $segundos_diferencia / (60 * 60 * 24);
//obtengo el valor absoulto de los días (quito el posible signo negativo)
$dias_diferencia = abs($dias_diferencia);
//quito los decimales a los días de diferencia
$dias_diferencia = 1+floor($dias_diferencia);
return $dias_diferencia;
//echo $dias_diferencia;
}
//otras funciones que usa esta funcion O.o

function dv($r){$s=1;for($m=0;$r!=0;$r/=10)$s=($s+$r%10*(9-$m++%6))%11;
return chr($s?$s+47:75);}

function dateconvert($date,$func) {
if ($func == 1){ //insert conversion
list($day, $month, $year) = split('[/.-]', $date);
$date = "$year-$month-$day";
return $date;
}
if ($func == 2){ //output conversion
list($year, $month, $day) = split('[-.]', $date);
$date = "$day/$month/$year";
return $date;
}

}
function obtieneFecha($date,$func){
//obtiene la fecha y la hora de un campo datetime de mysql
if ($func == 1){ //obtiene fecha
$date=substr($date,0,strrchr ($date,"-")+2);
return $date;
}
if ($func == 2){ //obtiene hora
$date=substr($date,strrchr ($date,"-")+2,strlen($date));
return $date;
}
}
function troceafecha($date,$func){
//obtiene dia mes y año por separado de una fecha php
switch ($func){
case 1:
//obtiene dia
$date=substr($date,0,2);
break;
case 2:
//obtiene mes
$date=substr($date,3,2);
break;
case 3:
//obtiene año
$date=substr($date,6,strlen($date));
break;
}
return $date;
}

pd:bueno ya saque suficiente la vuelta, pinte el codigo como si fuera dreamweaver, ya que estoy solo aca escuchando the Cramberries, asi que ahora regreso a mi trabajo regular.

No hay comentarios.: