【问题标题】:How to convert unix timestamp to JavaScript date object (consider time zone)如何将 unix 时间戳转换为 JavaScript 日期对象(考虑时区)
【发布时间】:2012-07-28 06:47:32
【问题描述】:
var date = new Date(1257397200000​);
document.write(date);
​

运行上面的代码我得到Wed Nov 04 2009 23:00:00 GMT-0600 (Central Standard Time)

我正在寻找一种基于不同时区创建日期对象的方法,比如对于那个时间戳,我想获得像Thursday, November 5th 2009, 00:00:00 (GMT -5) 这样的日期对象。

请注意,根据上述两个时区,日期是不同的,虽然它们代表相同的时间点。我在 CST,这就是为什么创建的对象是使用 CST 生成的吗?

谢谢。

【问题讨论】:

  • 是的,它很可能使用您的(本地)时区。我不知道图书馆,但应该有一种方法可以选择在哪个时区报告事情。请注意,时间戳应该改变。
  • 是的,时间戳不会改变。我的问题的答案很好,但您也可能会发现 this answer 很有帮助。

标签: javascript date


【解决方案1】:

不,这些日期没有不同,因为它们不代表不同的时间点。两者都代表Thu, 05 Nov 2009 05:00:00 GMT

JavaScript 中的Date 对象与时区无关,它只代表时间点。 Date.toString() 包含时区这一事实非常具有误导性,Date 中没有时区信息。它只是一个自纪元以来大约毫秒的包装器。

您看到的时区基于操作系统/浏览器区域设置。 您不能在不同的时区创建Date 对象。考虑使用getUTC*() 系列方法来获取与浏览器时区无关的值。

顺便说一句,您的示例代码打印:

Thu Nov 05 2009 06:00:00 GMT+0100 (CET)

在我的电脑上 - 这仍然是同一个时间点。

另见

【讨论】:

  • +1!喜欢你强调represents a point in time 点。
  • "你不能在不同的时区创建 Date 对象。"感谢您提出这个问题。
  • 所以基本上答案是您在将时间戳转换为日期时不需要关心用户的时区,因为它是自动完成的,对吧?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-09
  • 2014-08-01
  • 2017-05-24
  • 1970-01-01
  • 2018-08-03
  • 1970-01-01
相关资源
最近更新 更多