以下对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对象有哪些方法?
在适当的位置拼接:
似乎可以完成这项工作,但是我不确定这是否是最佳解决方案。
谢谢!
答案 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('');
}