【问题标题】:Javascript Date formatting shows incorrect hours [duplicate]Javascript日期格式显示不正确的时间[重复]
【发布时间】:2016-11-03 15:42:17
【问题描述】:

从服务器我得到一个日期时间序列化的对象。 (2016-11-03T10:51:01.517)

当我这样做时

var d = new Date("2016-11-03T10:51:01.517")

d 现在是 Thu Nov 03 2016 06:51:01 GMT-0400(东部夏令时间)

我需要时间准确地成为10:51:01

提前致谢

【问题讨论】:

    标签: javascript datetime utc


    【解决方案1】:

    这似乎是一个时区错误。

    【讨论】:

    • 你的意思是解析错误。
    • 没有错误。这是 JS 中日期解析的正常行为。例如,检查在日期时间字符串 (new Date( '2016-11-03T10:51:01.517Z' )) 后添加“Z”会发生什么。
    • 是的,一个错误。 "2016-11-03T10:51:01.517" 应该被解析为本地,但对于 OP,它被解析为 UTC。 “正常行为”不算数,language specification 算数。如果“正常”是大多数浏览器所做的,那么它也不正常。 Firefox、Opera 和 Chrome 正确(本地),Safari 错误(UTC)。一如既往:不要相信内置的解析器。 ;-)
    • 我的测试浏览器是火狐。在我的第一个答案中,当我说“错误”时,我的意思是这是对提问者的错误同化。很抱歉造成误解。
    【解决方案2】:

    您可以查看当地时区格式的时间。使用 toUTCString() 方法获取所需的时间。

    var d = new Date("2016-11-03T10:51:01.517")    
    alert(d.toUTCString());
    

    d.toUTCString() 将返回给我们Thu, 03 Nov 2016 10:51:01 GMT

    【讨论】:

    • 这是错的。 “2016-11-03T10:51:01.517”应该被解析为本地,因为时间戳中没有时区偏移。 UTC 等效值应该因时区偏移而不同,而不是相反。 ;-)
    猜你喜欢
    • 2017-07-18
    • 1970-01-01
    • 1970-01-01
    • 2014-10-06
    • 1970-01-01
    • 1970-01-01
    • 2015-10-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多