我有以下功能:
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或任何其他库来获取正确的值。
答案 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?给出的答案中的解决方案,该解决方案会检索给定位置或纬度和范围的正确时区偏移量。经度。
* =这假设北美