IE11中的'new Date()'不接受带时区的ISO 8701日期格式的字符串

时间:2018-12-06 04:09:58

标签: javascript internet-explorer web

以下对Date构造函数的调用在Chrome,Mozilla和Edge中有效,但在IE11中无效:

new Date("2018-11-01T04:00:00.000+1000");

注意:我从服务器响应中收到日期字符串,因此,我无法控制它

仅在IE11中,我得到Invalid Date作为返回值。我发现这是由于时区标记的格式(从+开始),因为以下调用可以按预期进行:

new Date("2018-11-01T04:00:00.000"); // No timezone

以及这个:

new Date("2018-11-01T04:00:00.000+10:00"); // Formatted timezone

通过IE11中的字符串"2018-11-01T04:00:00.000+1000"获取Date对象有哪些方法?

在适当的位置拼接:似乎可以完成这项工作,但是我不确定这是否是最佳解决方案。

谢谢!

1 个答案:

答案 0 :(得分:0)

解决问题的方法最终是,正如我所描述的,将:拼接在不存在的正确位置:

// Call this after making sure the date doesn't contain the : at the appropriate position
function formatExtendedTimezoneIn(originalDate) {
    const timezoneDivisorIndex = originalDate.length - 4;

    const arr = originalDate.split('');
    arr.splice(timezoneDivisorIndex+2, 0, ':');
    return arr.join('');
}