将ISO日期字符串转换为日期对象,而不考虑时区

目标:将ISO日期字符串转换为日期对象,而不考虑时区

我有一个ISO字符串:2017-07-23T20:30:00.00Z。

我试图用下列方法将该字符串转换为Date:

new Date('2017-07-23T20:30:00.00Z')

 moment('2017-07-23T20:30:00.00Z').toDate()

 moment.utc('2017-07-23T20:30:00.00Z').toDate()

所有提供以下输出:星期一7月24 2017 02:00:00 GMT + 0530(印度标准时间)

这是不正确的。

你能告诉我如何得到字符串中的确切日期吗?


最后简单地删除'Z'字符应该为你解决问题。

执行以下操作将打印:

moment('2017-07-23T20:30:00.00').toDate();
// Sun Jul 23 2017 20:30:00 GMT+0300 (GTB Daylight Time)

虽然这为我打印:

moment('2017-07-23T20:30:00.00Z').toDate();
// Sun Jul 23 2017 23:30:00 GMT+0300 (GTB Daylight Time)

发生这种情况是因为在格式中使用“Z”字符时不会导致将时间视为UTC。 它匹配一个时区说明符。

通过在括号中指定'Z',你就可以匹配一个文字Z,因此时区在默认情况下保留,这就是本地时区。


你应该总是指定分析格式。 在这种情况下,请关闭“Z”:

var s = '2017-07-23T20:30:00.00Z';
var m = moment(s, 'YYYY-MM-DDTHH:mm:ss'); // <-- parse format without Z
console.log(m.format())
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.18.1/moment.min.js"></script>

尝试这个

var date = new Date('2017-07-23T20:30:00.00Z');
console.log(date.getFullYear()+'/' + (date.getMonth()+1) +
 '/'+date.getDate());
链接地址: http://www.djcxy.com/p/46595.html

上一篇: Convert ISO date string to Date Object without considering timezone

下一篇: Convert milliseconds into UTC date object with UTC Time Zone