Javascript Date()返回IE中的无效日期(版本11)

时间:2019-06-26 12:09:43

标签: javascript date internet-explorer angular6

我将日期字符串硬编码为一个变量,并将其传递给新的Date()

let hardcoded = "10/4/2018 12:00:00 AM";
console.log($.type(hardcoded)); // String is printing
console.log(hardcoded); // 10/4/2018 12:00:00 AM  is printing
var d = new Date(hardcoded);
console.log(d); // Thu Oct 04 2018 00:00:00 GMT+0530 (India Standard Time)   is printing
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

在变量“ d”中,我有正确的日期..没有任何问题。

但是在下面的情况下,我在上面的硬编码中获取了convertDate变量中的相同字符串,但是它不起作用..

let convertedDate = new Date().toLocaleString("en-us", {
  timeZone: 'UTC'
});
console.log($.type(convertedDate)); // String is printing
console.log(convertedDate); // 6/26/2019 12:02:50 PM  is printing
var d = new Date(convertedDate);
console.log(d)
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

但是在变量d中:-“无效日期”即将到来。

2 个答案:

答案 0 :(得分:0)

尝试一下

  

var d = new Date(convertedDate.toDateString())

您过去的

  

2019/6/26下午12:30:57

但是Date()是预期的

  

2019-06-26T11:30:57.000Z

.toDateString()将转换 2019/6/26下午12:30:57 至 2019-06-26T11:30:57.000Z

当您在IE11中遇到此问题时,我发现此问题可能会为您解决此问题

IE's toLocaleString has strange characters in results

答案 1 :(得分:0)

在使用JavaScript Date实例创建新日期时,将日期字符串提供给日期构造函数should be an RFC2822 or ISO 8601 formatted date,而不是本地。

所以,我建议您可以如下修改代码:

        let convertedDate = new Date();

        var convertedDatestring = convertedDate.toLocaleString("en-us", {
            timeZone: 'UTC'
        });
        console.log($.type(convertedDatestring)); // String is printing
        console.log(convertedDatestring); // ‎‎6‎/‎26‎/‎2019‎ ‎3‎:‎24‎:‎04‎ ‎PM


        var d = new Date(convertedDate.toUTCString());
        console.log(d); //Wed Jun 26 2019 23:24:04 GMT+0800