Estoy tratando de obtener una diferencia entre dos fechas en segundos. La lógica sería así:
- establecer una fecha inicial que sería ahora;
- establecer una fecha final que sería la fecha inicial más una cantidad de segundos en el futuro (digamos 15 por ejemplo)
- obtener la diferencia entre esos dos (la cantidad de segundos)
La razón por la que lo hago con fechas es porque la fecha / hora final depende de algunas otras variables y nunca es la misma (depende de qué tan rápido un usuario haga algo) y también almaceno la fecha inicial para otras cosas.
He estado intentando algo como esto:
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));
El caso es que nunca obtengo la diferencia correcta. Traté de dividir entre 24 * 60
lo que me dejaría con los segundos, pero nunca lo hago bien. Entonces, ¿qué tiene de malo mi lógica? Podría estar cometiendo un error estúpido ya que es bastante tarde, pero me molesta que no pueda hacerlo funcionar :)
javascript
date
Roland
fuente
fuente
Respuestas:
El código
O incluso más simple
(endDate - startDate) / 1000
como se señala en los comentarios, a menos que esté usando el mecanografiado.La explicación
Debe llamar al
getTime()
método para losDate
objetos y luego simplemente restarlos y dividirlos por 1000 (ya que originalmente está en milisegundos). Como extra, cuando llama algetDate()
método, de hecho obtiene el día del mes como un número entero entre 1 y 31 (no basado en cero) en lugar del tiempo de época que obtendría al llamar algetTime()
método, representando el número de milisegundos desde el 1 de enero de 1970, 00:00Despotricar
Dependiendo de cuáles sean sus operaciones relacionadas con la fecha, es posible que desee invertir en la integración de una biblioteca como date.js o moment.js que hace las cosas mucho más fáciles para el desarrollador, pero eso es solo una cuestión de preferencia personal.
Por ejemplo, en moment.js haríamos lo
moment1.diff(moment2, "seconds")
que es hermoso.Documentos útiles para esta respuesta
fuente
.valueOf()
, que es lo que el-
operador llamaría en cualquier caso ...Puede usar
new Date().getTime()
para obtener marcas de tiempo. A continuación, se puede calcular la diferencia entre el inicio y final y, finalmente, transformar la marca de tiempo que estáms
ens
.fuente
fuente
El siguiente código dará la diferencia horaria en segundo.
fuente
intente usar funciones dedicadas de lenguajes de programación de alto nivel. JavaScript se
.getSeconds();
adapta aquí:fuente
diferencia horaria entre ahora y 10 minutos después usando momentjs
fuente