Estou tentando obter uma diferença entre duas datas em segundos. A lógica seria assim:
- defina uma data inicial que seria agora;
- defina uma data final que seria a data inicial mais alguns segundos no futuro (digamos 15 por exemplo)
- obtenha a diferença entre os dois (a quantidade de segundos)
A razão pela qual faço isso com datas é porque a data / hora final depende de algumas outras variáveis e nunca é a mesma (depende da rapidez com que um usuário faz alguma coisa) e também guardo a data inicial para outras coisas.
Eu tenho tentado algo assim:
var _initial = new Date(),
_initial = _initial.setDate(_initial.getDate()),
_final = new Date(_initial);
_final = _final.setDate(_final.getDate() + 15 / 1000 * 60);
var dif = Math.round((_final - _initial) / (1000 * 60));
O problema é que nunca entendi a diferença certa. Tentei dividir pelo 24 * 60
que me deixaria com os segundos, mas nunca entendi direito. Então, o que há de errado com a minha lógica? Eu posso estar cometendo algum erro estúpido, já que é muito tarde, mas me incomoda que eu não consiga fazê-lo funcionar :)
javascript
date
Roland
fonte
fonte
Respostas:
O código
Ou ainda mais simples,
(endDate - startDate) / 1000
como indicado nos comentários, a menos que você esteja usando texto datilografado.A explicação
Você precisa chamar o
getTime()
método para osDate
objetos e simplesmente subtraí-los e dividir por 1000 (já que é originalmente em milissegundos). Como um extra, quando você está chamando ogetDate()
método, na verdade, está recebendo o dia do mês como um número inteiro entre 1 e 31 (não com base em zero), em oposição ao tempo de época que você teria ao chamar ogetTime()
método, representando o número de milissegundos desde 1º de janeiro de 1970, 00:00Rant
Dependendo das operações relacionadas à data, convém investir na integração de uma biblioteca como date.js ou moment.js, que facilitam muito as coisas para o desenvolvedor, mas isso é apenas uma questão de preferência pessoal.
Por exemplo, em moment.js , faríamos o
moment1.diff(moment2, "seconds")
que é bonito.Documentos úteis para esta resposta
fonte
.valueOf()
, que é o que o-
operador chamaria em qualquer caso ...Você pode usar
new Date().getTime()
para obter carimbos de data e hora. Então você pode calcular a diferença entre o final e começar e, finalmente, transformar o timestamp que éms
paras
.fonte
fonte
O código abaixo dará a diferença de tempo em segundo.
fonte
tente usar funções dedicadas de linguagens de programação de alto nível. O JavaScript
.getSeconds();
combina aqui:fonte
Diferença de hora entre agora e 10 minutos depois, usando momentjs
fonte