Poiche' la strana natura delle date e dei calcoli fra esse, per le quali giorni, mesi e anni non sono multipli fra loro, solitamente per "differenza fra due date" si intende "il numero di anni, mesi, giorni da aggiungere ad una data per raggiungere l'altra"
Se ti ritrovi in questa definizione allora la via e' semplice: aggiungi anni alla prima data finche' la stessa rimane minore della data d'arrivo, stessa cosa per mesi e giorni ed avrai risolto il quesito.
codice:
<script>
oggi = new Date();
futuro = new Date(2015,5,19); // 19 giugno 2015 : ricorda che il mese va da 0 a 11
var aa=0;mm=0;gg=0;
while (oggi<futuro) {oggi.setFullYear(oggi.getFullYear()+1);aa++} oggi.setFullYear(oggi.getFullYear()-1); aa--;
while (oggi<futuro) {oggi.setMonth(oggi.getMonth()+1);mm++} oggi.setMonth(oggi.getMonth()-1);mm--;
while (oggi<futuro) {oggi.setDate(oggi.getDate()+1);gg++} gg--;
alert(''+gg+' giorni, '+mm+' mesi, '+aa+' anni')
</script>