Особого смысла считать разницу в интервалах больших чем сутки нет по причине непостоянства количества дней в этих интервалах (в месяцах и годах). Хотя для удобства же представления можно сделать, например, так:
var S = 60 * 60 * 24 * 1000;
var diff2 = function(date1, date2)
{
var delta = date1.getDate() - 1;
var date3 = new Date(date1.getFullYear(), date1.getMonth(), 1);
var date4 = new Date(date2.getFullYear(), date2.getMonth(), date2.getDate() - delta);
var m = date4.getMonth() - date3.getMonth();
var d = date4.getDate() - 1;
alert([
date1, date2, (date4 - date3) / S,
date3, date4, (date2 - date1) / S,
'months: ' + m, 'days: ' + d
].join('\n'));
};
var x = new Date(2013, 3, 10);
var y = new Date(2013, 9, 20);
diff2(x, y);