如何将UTC日期转换为本地日期对象?

时间:2017-06-06 19:10:54

标签: javascript datetime momentjs javascript-objects

我不知道为什么,但我已经尝试了互联网上提供的所有解决方案,但仍然无法成功。事件MomentJs无能为力。 所以,我有一个日期字符串," 2017-06-05T15:00:00Z",它来自rest api。 我甚至尝试过时刻js但是请求帮助。 注意我希望返回日期对象,因为库需要日期对象而不是本地字符串。 所以,我试过了:

var d = new Date('2017-06-05T15:00:00Z')
console.log(d.getHours())

以上代码打印17而不是15!那么,我做错了什么呢?由于图书馆在做自己的事情时也需要1700小时,因为日历显示1700小时而不是1500小时。

2 个答案:

答案 0 :(得分:2)

您应该可以使用getTimezoneOffsetMethod

var d = new Date('2017-06-05T15:00:00Z')
d.setHours(d.getHours() + (d.getTimezoneOffset() / 60))
console.log(d.getHours()) // 15

答案 1 :(得分:0)

'2017-06-05T15:00:00Z'

Z 表示 Zulu (UTC +0:00)。所以这个时间字符串指定它不是本地,而是全局时间。 Date对象是本地的,所以:

new Date('2017-06-05T15:00:00Z');

回到当地的日期,当时在祖鲁15时钟。所以你目前在时区UTC + 2:00。

所以你需要让时间字符串成为本地的是删除“Z”:

new Date('2017-06-05T15:00:00Z'.replace("Z",""));

或删除时区偏移,请参阅其他答案......