Para encontrarmos o tempo percorrido entre duas datas, devemos converter cada data em uma imagem de hora, calcular a diferença e, depois, converter a diferença em uma saída legível para nós.
Para isso usaremos a função mktime(), que retorna um timestamp, ou seja, o numero de segundos desde que a época UNIX começou(1 de janeiro de 1970).
Para resolver este problema vamos criar uma função que recebe duas datas e retorna a quantidade tempo percorrido entre elas:
// Determinando um intervalo entre duas datas
// formato: dd/mm/aaaa
function calculaIntervalo($data1,$data2=''){
// se data2 for omitida, o calculo sera feito ate a data atual
$data2 = $data2=='' ? date("d/m/Y",mktime()) : $data2;
// separa as datas em dia,mes e ano
list($dia1,$mes1,$ano1) = explode("/",$data1);
list($dia2,$mes2,$ano2) = explode("/",$data2);
// so lembrando que o padrao eh MM/DD/AAAA
$timestamp1 = mktime(0,0,0,$mes1,$dia1,$ano1);
$timestamp2 = mktime(0,0,0,$mes2,$dia2,$ano2);
// calcula a diferenca em timestamp
$diferenca = ($timestamp1 > $timestamp2) ? ($timestamp1 - $timestamp2) : ($timestamp2 - $timestamp1);
// retorna o calculo em anos, meses e dias
return (date("Y",$diferenca)-1970)." anos,".(date("m",$diferenca)-1)." meses e ".(date("d",$diferenca)-1)." dias";
}