【发布时间】:2016-06-02 23:58:53
【问题描述】:
假设我创建了一个 Date() 对象并从纪元开始以毫秒为单位传递,如下所示:
var d = new Date(0);
然后:
console.log(d);
输出:
Wed Dec 31 1969 16:00:00 GMT-0800 (Pacific Standard Time)
如果我打电话给d.getHours(),输出是:
16
这在我的用例中是不可取的。
如何创建忽略用户本地时区/系统时钟设置的日期对象?我希望能够以毫秒为单位(从纪元时间开始)传递一个时间,并像用户始终使用 UTC 一样显示它,所以如果他们在 Windows 中更改系统时钟,它不会改变显示的内容。
【问题讨论】:
-
简短的回答是你不能。但是您可以获得用户当前的 TZ 偏移量:developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…
-
或者,您可以将创建指定为 UTC:developer.mozilla.org/en/docs/Web/JavaScript/Reference/… 但是当您使用 toString() 日期时,它仍会显示本地 TZ 偏移量。
-
谢谢,我只是从传递给 Date() 的原始毫秒长中减去了时区偏移量,并从中创建了一个日期,它按预期工作。如果你创建一个答案,我会勾选它
-
@Joey——你不必减去偏移量。这样做意味着内置的 toString 将附加偏移量并使其看起来日期是不同的时间。
标签: javascript date