TransWikia.com

Como subtrair e somar datas com javascript?

Stack Overflow em Português Asked by user8811593 on January 27, 2021

Estou com duas datas e preciso fazer um delta dessas datas para adicionar nas seguintes. Veja abaixo:

data1 = 2020-08-14T10:02
data2 = 2020-08-14T10:07

O código abaixo traz a diferença dessas datas:

var a = moment('2020-08-14T10:02');
var b = moment('2020-08-14T10:07');

console.log(b.diff(a, 'minutes'))
console.log(b.diff(a, 'hours'))
console.log(b.diff(a, 'days'))
console.log(b.diff(a, 'weeks'))

//5
//0
//0
//0

Agora eu quero que a data3 seja "2020-08-14T10:07" e adicionar os 5 minutos de diferença na data4, podem me ajudar?

One Answer

Como o objeto Moment implementa o método valueOf para retornar o tempo em milissegundos, você pode apenas subtrair os objetos para capturar a diferença.

Depois use o método add para adicionar a diferença na sua data. Porém o método add não gera um novo objeto, ele modifica o objeto que invoca o método, se você quer gerar um objeto Moment separado, clone o objeto anterior com o método clone antes de adicionar a diferênça:

var a = moment('2020-08-14T10:02');
var b = moment('2020-08-14T10:07');

var diff = b - a;
var c = b.clone().add(diff, 'millisecond');
var d = c.clone().add(diff); // informar que a diferença é em milissegundos é opcional

// isso também é possível graças ao método valueOf, 
// mas se você gerar uma nova data a partir dos milissegundos, 
// você irá perder o fuso horário dessa data
var e = moment(d + diff);

console.log('a:', a);
console.log('b:', b);
console.log('c:', c);
console.log('d:', d);
console.log('e:', e);
<script src="https://momentjs.com/downloads/moment.min.js"></script>

Answered by user140828 on January 27, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP