将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