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

问题描述:

我不知道为什么,但我已经尝试了所有可用的互联网解决方案,但仍然无法成功。 Event MomentJs无法提供帮助。 所以,我有一个日期字符串“2017-06-05T15:00:00Z”,它来自rest api。 我甚至尝试过js的时刻,但有帮助。 注意我希望返回日期对象,因为库期望日期对象不是本地字符串。 所以,到目前为止,我试过:如何将UTC日期转换为本地日期对象?

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

上面的代码打印17,而不是15岁!那么,我做错了什么?由于图书馆也在做自己的事情时获得了1700小时的日历,因此它显示了1700小时而不是1500小时。

+2

取出Z. .. –

+0

@Jonasw对不起,它来自休息API,除非你想让我处理字符串,但这是唯一的方法吗? – Maverick

您应该能够使用getTimezoneOffsetMethod

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

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

ž意味着祖鲁(UTC + 0:00)。所以这个时间字符串指定它不是本地而是全局时间。日期对象是本地的,因此:

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

回收当地日期,当它是在Zulu时钟15。所以你现在在时区UTC + 2:00。

因此,所有你需要得到TIMESTRING成为当地被删除的“Z”:

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

或删除的时区偏移,看其他的答案...