Javascript - 考虑到夏令时,以毫秒为单位减去两个日期

Javascript - subtract two dates in milliseconds considering daylight time saving

我有以下功能:

function subtractDatesMs(date1, date2) {
    var departureDate = new Date(date1);
    var arriveDate = new Date(date2);
    var diff = (arriveDate.getTime() - departureDate.getTime());
    return diff;
}

作为参数发送的日期是这样的:

"2015-11-09T15:50:00-04:00",
"2015-11-09T12:40:00-05:00"

包括时区偏移值。

它在大多数情况下工作正常,但是当我从使用夏令时的 region/area 中减去一些日期时,差异是不正确的(例如 delayed/ahead 1 小时) .

考虑到它所在时区 region/area 的夏令时,减去这些日期并获得正确的毫秒差值的最佳方法是什么?

欢迎任何样品。如果需要,您可以使用 jquery 或任何其他库来获取正确的值。

我认为问题出在您的代码接收的日期字符串中。 UTC 偏移量应正确反映额外的 DST 偏移量。由于 -05:00,您给出的示例时间 "2015-11-09T12:40:00-05:00" 表示东部标准时间*。另一个示例时间 "2015-11-09T15:50:00-04:00" 表示大西洋标准时间或东部夏令时(即东部标准时间加夏令时)

JavaScript 的 Date 对象将正确转换您在示例中提供的网络时间格式。

如果无法更正输入的时间,则您还需要知道国家/地区,因为 DST 特定于国家或国家/地区的地区。然后,您可以使用 How to know whether a country is using Daylight Saving Time using JavaScript? 的答案中的解决方案,它会检索给定地点或纬度和经度的正确时区偏移量。

* = 这假设北美