w3schools - Como subtrair data/hora em javascript?




w3schools try out (4)

Esta questão já tem uma resposta aqui:

Eu tenho um campo em uma grade contendo data / hora e preciso saber a diferença entre isso e data / hora atual. Qual poderia ser a melhor maneira de fazer isso?


A menos que você esteja subtraindo datas no mesmo cliente de navegador e não se preocupe com casos de borda como alterações no horário de verão, provavelmente será melhor usar o moment.js que oferece APIs localizadas poderosas. Por exemplo, isso é o que eu tenho no meu utils.js:

subtractDates: function(date1, date2) {
    return moment.subtract(date1, date2).milliseconds();
},
millisecondsSince: function(dateSince) {
    return moment().subtract(dateSince).milliseconds();
},

Isso lhe dará a diferença entre duas datas, em milissegundos

var diff = Math.abs(date1 - date2);

No seu exemplo, seria

var diff = Math.abs(new Date() - compareDate);

Você precisa ter certeza de que compareDate é um objeto Date válido.

Algo assim provavelmente funcionará para você

var diff = Math.abs(new Date() - new Date(dateStr.replace(/-/g,'/')));

ou seja, transformando "2011-02-07 15:13:06" em new Date('2011/02/07 15:13:06') , que é um formato que o construtor Date pode compreender.


Você pode apenas subtrair dois objetos de data.

var d1 = new Date(); //"now"
var d2 = new Date("2011/02/01")  // some date
var diff = Math.abs(d1-d2);  // difference in milliseconds

Você pode usar o método getTime() para converter a Date no número de milissegundos desde 1º de janeiro de 1970. Então, você pode fazer facilmente quaisquer operações aritméticas com as datas. Claro que você pode converter o número de volta para a Date com setTime() . Veja here um exemplo.





javascript