JavaScript suporta perfeitamente a diferença de data fora da caixa
var msMinute = 60*1000,
msDay = 60*60*24*1000,
a = new Date(2012, 2, 12, 23, 59, 59),
b = new Date("2013 march 12");
console.log(Math.floor((b - a) / msDay) + ' full days between');
console.log(Math.floor(((b - a) % msDay) / msMinute) + ' full minutes between');
Agora, algumas armadilhas. Experimente isto:
console.log(a - 10);
console.log(a + 10);
Portanto, se você corre o risco de adicionar um número e uma data, converta a data para number
diretamente.
console.log(a.getTime() - 10);
console.log(a.getTime() + 10);
Meu primeiro exemplo demonstra o poder do objeto Date, mas na verdade parece ser uma bomba-relógio