我将日期字符串硬编码为一个变量,并将其传递给新的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中:-“无效日期”即将到来。
答案 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中遇到此问题时,我发现此问题可能会为您解决此问题
答案 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