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

时间:2015-08-02 14:56:33

标签: javascript date dst

我有以下功能:

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"

包括时区偏移值。

在大多数情况下都可以正常工作,但是当我从使用日光时间节省的区域/区域中减去某些日期时,差异是不正确的(例如,延迟/提前1小时)。

考虑到来自时区的地区/区域的日光时间节省,减去这些日期并获得正确的毫秒差异的最佳方法是什么?

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

1 个答案:

答案 0 :(得分:3)

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

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

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

* =这假设北美