Mira, me he sentido voluntario y con ganas, y te he hecho hasta el codigo.
La base es comparar los getTime() de las dos fechas, que te da los milisegundos transcurridos desde la fecha epoch para un objeto Date determinado:
Código PHP:
function DateDDMMAA(str) {
str=str.split("/");
dia=parseInt(str[0]);
mes=parseInt(str[1])-1; //nuestros meses empiezan de 1, de Js de 0.
anyo=parseInt(str[2]);
return new Date(anyo,mes,dia);
}
function diferencia(fecha1,fecha2) {
var vuelta="";
sg1=fecha1.getTime(); sg2=fecha2.getTime();
if(sg1>sg2) {
vuelta="La primera fecha es mayor a la segunda.";
aux=sg2; sg2=sg1; sg1=aux; //intercambiamos las fechas para trabajar en los dos casos igual
}
else {
vuelta="La segunda fecha es mayor a la primera.";
}
//a partir de aqui siempre sg2>sg1 en los dos casos
diferencia=(sg2-sg1)/1000; //esta en milisegundos, a segundos
vuelta+=" La diferencia entre ellas es de "+diferencia+" segundos, o "+(diferencia/(60*60*24))+" dias, o "+(diferencia/(60*60*24*30))+" meses.";
return vuelta;
}
var ahora=new Date();
var aquella=DateDDMMAA("21/07/2005");
alert( diferencia(ahora,aquella) );
Te doy una funcion DateDDMMAA(str), a la que se le pasa un "dd/mm/aaaa" y te devuelve un objeto fecha javascript.
(por cierto, no se controla que las fechas sean iguales, eso solo se daria si la fecha del sistema son las 00:00:00 exactamente, y los dias meses y años fuesen iguales, algo improbable, aunque depende en que rango de fechas trabajemos).
s2!