IE Date.Parse()返回NaN

时间:2017-06-01 18:04:02

标签: javascript internet-explorer-11

我正在尝试解析此字符串

" 2017-06-01 11:22:20.683"

它在Firefox中运行得很好,但在IE 11中返回NaN 因为在遗留系统上工作

,我无法修改源字符串



function myFunction() {
    var d = Date.parse("2017-06-01 11:22:20.683");
    document.getElementById("demo").innerHTML = d;
}

<p id="demo"></p>
<button onclick="myFunction()">Try it</button>
&#13;
&#13;
&#13;

4 个答案:

答案 0 :(得分:2)

这是最简单的解决方案:

function myFunction(dateString) {
    var str = dateString.replace(/^(.*-[0-9][0-9])(\ )([0-9][0-9]\:.*$)/, '$1T$3')
    var d = Date.parse(str);
    document.getElementById("demo").innerHTML = d;
}

答案 1 :(得分:1)

不幸的是,这个API不太可靠。 Edge仍会为您提供NaN。你有两个选择:

1)使用名为MomentJS的外部库。非常容易使用并且已经实施了所有角落案例。 (http://momentjs.com/docs/

2)请参考此问题手动解析:Why does Date.parse give incorrect results?

希望有所帮助

答案 2 :(得分:1)

请不要将'-'替换为'/',而应使用空格。

var str = "15-Dec-2019 05:25:45 PM ";
console.log( Date.parse( str.replace(/-/g, ' ') ) );

这对我在Chrome和Firefox浏览器中有效,希望对您有所帮助。

答案 3 :(得分:-1)

/// Below example will work in All Browser including IE
<script>
 var selected_date = '2019,Apr,05'; // You need to change date format like this
 var parsing_date = Date.parse(selected_date.replace(/^(.*-[0-9][0-9])(\ )([0-9][0-9]\:.*$)/, '$1T$3'));
 alert(parsing_date); 
</script>