【发布时间】:2018-10-07 13:48:06
【问题描述】:
Javascript 在这里毫无希望,但我遇到了一个我似乎无法理解的问题,并且不知道它是否是 JS 中定义的行为......
据我了解,new Date() 返回浏览器报告的当前时区的当前时间。在撰写本文时,我在意大利米兰 (GMT +0200 CEST),所以在执行以下操作时:
var date = new Date();
console.log(date);
console.log(date.getTimezoneOffset());
我得到了,正如预期的那样:
Sun Oct 07 2018 15:42:12 GMT+0200 (Central European Summer Time)
-120
但是,根据我的理解,再次将毫秒投入 Date 构造函数会创建一个基于 Epoch Time 的日期,即 1970 年 1 月 1 日 00:00:00 GMT +0000 - 那么为什么如果我执行:
var date = new Date(0); // Note The 0
console.log(date);
console.log(date.getTimezoneOffset())
我得到:
Thu Jan 01 1970 01:00:00 GMT+0100 (Central European Standard Time)
-60
浏览器是否出于某种原因更改了它认为我所在的时区?这给我从数据库中检索 unix 时间戳并将其显示在用户的当前时区中造成了很多问题!
对此的任何帮助或建议将不胜感激!
非常感谢! :)
【问题讨论】:
-
好吧,在 1970 年 1 月 1 日,你会在 CET,因为它是在冬天的中间。但我不知道浏览器会有这种夏令时意识。
-
@RobinZigmond 通常是底层操作系统知道夏令时(或“夏季”)时间。
-
当然,谢谢@Pointy
标签: javascript date timezone unix-timestamp