Aqui os dejo esta funcion por si alguien, necesita algo parecido: Es una funcion que pasandole dos parametros de fecha con formato (Y-m-d H:i:s) te devuelve la diferencia entre ambas, en años, meses, dias, horas, minutos, segundos, respetando los meses con diferente numero de dias y años bisiestos:
si alguno le encontrais algun fallo por favor dadme un toque.
Código PHP:
function timeBetween($desde,$hasta) {
$ini = explode(" ",$desde);
$fIni = $ini[0];
$hIni = $ini[1];
$fIni = explode("-",$fIni);
$hIni = explode(":",$hIni);
$fin = explode(" ",$hasta);
$fFin = $fin[0];
$hFin = $fin[1];
$fFin = explode("-",$fFin);
$hFin = explode(":",$hFin);
$anos = $fFin[0] - $fIni[0];
$meses = $fFin[1] - $fIni[1];
$dias = $fFin[2] - $fIni[2];
$horas = $hFin[0] - $hIni[0];
$minutos = $hFin[1] - $hIni[1];
$segundos = $hFin[2] - $hIni[2];
if ($segundos < 0) {
$minutos--;
$segundos = 60 + $segundos;
}
if ($minutos < 0) {
$horas--;
$minutos = 60 + $minutos;
}
if ($horas < 0) {
$dias--;
$horas = 24 + $horas;
}
if ($dias < 0)
{
--$meses;
switch ($fIni[1]) {
case 1: $dias_mes_anterior=31; break;
case 2: $dias_mes_anterior=31; break;
case 3:
if (checkdate(2,29,$fIni[0]))
{
$dias_mes_anterior=29; break;
} else {
$dias_mes_anterior=28; break;
}
case 4: $dias_mes_anterior=31; break;
case 5: $dias_mes_anterior=30; break;
case 6: $dias_mes_anterior=31; break;
case 7: $dias_mes_anterior=30; break;
case 8: $dias_mes_anterior=31; break;
case 9: $dias_mes_anterior=31; break;
case 10: $dias_mes_anterior=30; break;
case 11: $dias_mes_anterior=31; break;
case 12: $dias_mes_anterior=30; break;
}
$dias=$dias + $dias_mes_anterior;
}
if ($meses < 0)
{
--$anos;
$meses = $meses + 12;
}
return array("años" => $anos,
"meses" => $meses,
"dias" => $dias,
"horas" => $horas,
"minutos" => $minutos,
"segundos" => $segundos);
}
un saludo!!
agur