¿Cómo puedo obtener el número de días entre dos fechas en JavaScript?
¿Cómo puedo obtener el número de días entre dos fechas en JavaScript? Por ejemplo, dadas dos fechas en cajas de entrada:
<input id="first" value="1/1/2000"/>
<input id="second" value="1/1/2001"/>
<script>
alert(datediff("day", first, second)); // what goes here?
</script>
380
3
Aquí hay una implementación rápida y sucia de
datediff
, como prueba de concepto para resolver el problema presentado en la pregunta. Se basa en el hecho de que se pueden obtener los milisegundos transcurridos entre dos fechas restándolas, lo que las convierte en su valor numérico primitivo (milisegundos desde el comienzo de 1970).begin snippet: js hide: false console: true babel: false -->
...fin del fragmento..;
Debe tener en cuenta que las APIs de Date "normales" (sin "UTC" en el nombre) operan en la zona horaria local del navegador del usuario, por lo que en general podría tener problemas si su usuario está en una zona horaria que no espera, y su código tendrá que lidiar con las transiciones del horario de verano. Debería leer cuidadosamente la documentación del objeto Date y sus métodos, y para cualquier cosa más complicada, considere fuertemente el uso de una biblioteca que ofrezca APIs más seguras y potentes para la manipulación de fechas.
Date
-- Referencia de MDN JavaScriptAdemás, con fines ilustrativos, el fragmento utiliza acceso con nombre en el objeto
window
por razones de brevedad, pero en producción debería utilizar APIs estandarizadas como getElementById, o más probablemente, algún framework de UI;Yo seguiría adelante y cogería esta pequeña utilidad y en ella encontrarás funciones para esto para ti. Aquí's un ejemplo corto:
¿Qué tal si utilizas formatDate del widget DatePicker? Podrías usarlo para convertir las fechas en formato timestamp (milisegundos desde el 01/01/1970) y luego hacer una simple resta.