Estoy tratando de calcular la diferencia horaria dada una fecha y hora de inicio y una fecha y hora de finalización. Tengo 2 objetos de fecha para calcular la diferencia horaria. El problema es cuando las fechas abarcan un día DST (p. ej., 7 de noviembre).
fecha y hora de inicio = 6 de noviembre, 16:30
fecha y hora de finalización = 7 de noviembre, 01:00
Diferencia esperada = 8,5 horas, pero recibió 9,5 horas
Uso de la biblioteca JS de Luxon
<script src="https://cdn.jsdelivr.net/npm/luxon@1.25.0/build/global/luxon.min.js"></script> <script> startDate = luxon.DateTime.fromObject({year: 2021, month: 11, day: 06, hour: 16, minute: 30 }, { zone: 'America/New_York' }); endDate = luxon.DateTime.fromObject({year: 2021, month: 11, day: 07, hour: 01, minute: 0 }, { zone: 'America/New_York' }); diff = Math.abs(startDate.diff(endDate).as('hours')); console.log(startDate.toMillis() + ' ' + endDate.toMillis() + ' ' + diff) </script>El código anterior me da 570 que son 9,5 horas. Espero 510, que son 8,5 horas usando la función diff.
Puedo usar la compensación en cada una de estas fechas para sumar la diferencia de compensación
offset=(endDate.offset - startDate.offset)/60 console.log(endDate.diff(startDate, 'hours').plus({hours: offset}).toObject())Quería saber si hay otra forma de resolver esto usando el método diff.