Quiero calcular la diferencia de fechas en días, horas, minutos, segundos, milisegundos, nanosegundos. ¿Cómo puedo hacerlo?
javascript
datetime
Farhan Siddiqui
fuente
fuente
Respuestas:
Suponiendo que tiene dos
Date
objetos , puede restarlos para obtener la diferencia en milisegundos:A partir de ahí, puede usar aritmética simple para derivar los otros valores.
fuente
Math.floor((date2 - date1) / (1000*60*60*24))
, para la diferencia en cualquier otra unidad, ajuste el denominador (el valor base está en ms).Muestra de código tomada de aquí .
fuente
Otra solución es convertir la diferencia en un nuevo objeto Fecha y obtener el año de esa fecha (diferente de 1970), mes, día, etc.
Entonces la diferencia es como "3 años y 6 meses y 4 días". Si quieres tomar la diferencia en un estilo legible para humanos, eso puede ayudarte.
fuente
Expresiones como "diferencia en días" nunca son tan simples como parecen. Si tienes las siguientes fechas:
la diferencia en el tiempo es de 2 minutos, ¿la "diferencia en días" debería ser 1 o 0? Surgen problemas similares para cualquier expresión de la diferencia en meses, años o lo que sea, ya que los años, meses y días son de diferentes duraciones y diferentes tiempos (por ejemplo, el día en que comienza el horario de verano es 1 hora más corto de lo habitual y dos horas menos que el día en que termina).
Aquí hay una función para una diferencia en días que ignora la hora, es decir, para las fechas anteriores, devuelve 1.
Esto puede ser más conciso:
fuente
fuente
use Moment.js para todos sus cálculos de fecha y hora relacionados con JavaScript
La respuesta a su pregunta es:
Los detalles completos se pueden encontrar aquí
fuente
fuente
Con momentjs es simple:
fuente
fuente
Lo sentimos, pero el cálculo plano de milisegundos no es confiable Gracias por todas las respuestas, pero pocas de las funciones que probé fallan en 1. Una fecha cercana a la fecha de hoy 2. Una fecha en 1970 o 3. Una fecha en un año bisiesto.
Enfoque que mejor funcionó para mí y cubre todos los escenarios, por ejemplo, año bisiesto, fecha próxima en 1970, 29 de febrero, etc.
fuente
Si está utilizando moment.js, entonces es bastante sencillo encontrar la diferencia de fecha.
fuente
fuente
Creo que esto debería hacerlo.
fuente
Así es como puede implementar la diferencia entre fechas sin un marco.
fuente
fuente
Ok, hay muchas formas de hacerlo. Sí, puedes usar JS viejo y simple. Sólo inténtalo:
Emulemos el pasaje usando Date.prototype.setMinutes y asegurémonos de que estamos dentro del rango.
Alternativamente, podría usar alguna biblioteca como js-joda , donde puede hacer fácilmente cosas como esta (directamente desde documentos):
Hay muchas más bibliotecas ofc, pero js-joda tiene una ventaja adicional de estar disponible también en Java, donde se ha probado exhaustivamente. Todas esas pruebas se han migrado a js-joda, también es inmutable.
fuente
esto debería funcionar bien si solo necesita mostrar el tiempo restante, ya que JavaScript usa marcos para su tiempo, obtendrá su Hora de finalización: el tiempo RN después de eso podemos dividirlo por 1000, ya que aparentemente 1000 marcos = 1 segundo, después de eso, puede usar las matemáticas básicas del tiempo, pero todavía hay un problema con este código, ya que el cálculo es estático, no puede compensar el total de días diferentes en un año (360/365/366), el montón de SI después de que el cálculo sea nulo si el tiempo es inferior a 0, espero que esto ayude aunque no sea exactamente lo que está preguntando :)
fuente