function convertMS(ms) {
var d, h, m, s;
s = Math.floor(ms / 1000);
M = Math.floor(s / 60);
h = Math.floor(M / 60);
d = Math.floor(h / 24);
m = Math.floor(d / 30);
y = Math.floor(m / 12);
s %= 60;
M %= 60;
h %= 24;
d %= 30;
m %= 12;
return {years:y,months:m,days: d, hours: h, minutes: M, seconds: s };
};
var diff = (new Date() - new Date(1980,0,1));
console.log(convertMS(diff))
v2:
<script>
function daysInMonth (month, year) {
return new Date(year, month+1, 0).getDate();
}
function diffs(a,b){
y=(a.getFullYear())-(b.getFullYear())
m=(a.getMonth())-(b.getMonth())
d=(a.getDate())-(b.getDate())
h=(a.getHours())-(b.getHours ())
M=(a.getMinutes())-(b.getMinutes())
s=(a.getSeconds())-(b.getSeconds())
if (s<0){s+=60;M-=1;}
if (M<0){M+=60;h-=1;}
if (h<0){h+=24;d-=1;}
var dim=daysInMonth(a.getMonth(),a.getFullYear())
while (d<0){d+=dim;m-=1;}
if (m<0){m+=12;y-=1;}
return {years:y,months:m,days: d, hours: h, minutes: M,seconds:s};
}
var t=new Date();
var t1=new Date(1980,0,1);
var diff = diffs(t , t1);
document.write(JSON.stringify(diff))
</script>
Samples
var t=new Date('2018-07-01');
var t1=new Date('2018-05-31');
var diff = diffs(t , t1);
console.log(JSON.stringify(diff))
var t=new Date('2018-03-01');
var t1=new Date('2018-01-31');
var diff = diffs(t , t1);
console.log(JSON.stringify(diff))
var t=new Date('2016-03-01');
var t1=new Date('2016-01-31');
var diff = diffs(t , t1);
console.log(JSON.stringify(diff))
Results
{"years":0,"months":1,"days":1,"hours":0,"minutes":0,"seconds":0}
{"years":0,"months":1,"days":1,"hours":0,"minutes":0,"seconds":0}
{"years":0,"months":1,"days":1,"hours":0,"minutes":0,"seconds":0}