【问题标题】:Chrome Javascript Date Constructor bugs?Chrome Javascript 日期构造器错误?
【发布时间】:2016-09-08 21:35:10
【问题描述】:

我需要计算一个日期并写下一个。

new Date(service.today().getTime() + (service.plazo * service.DAY_MILLISECONDS))

service.today = function() {
  var now = new Date();
  now.setHours(0,0,0,0);
  return now;
};

service.DAY_MILLISECONDS = 60*60*24*1000;

service.plazo 是一个数字 (1,2,3,4....)

结果

2016 年 5 月 18 日星期三 23:00:00 GMT-0300(Hora est. Sudamérica Pacífico)

我在笔记本电脑中更改了时区:-3 到 -4

2016 年 5 月 18 日星期三 23:00:00 GMT-0400(Hora est. Sudamérica Pacífico)

一切都很完美,但是

new Date()

2016 年 5 月 12 日星期四 16:19:51 GMT-0300(Hora verano Sudamérica Pacífico)

new Date(service.today().getTime() + (service.plazo * service.DAY_MILLISECONDS))

2016 年 5 月 18 日星期三 23:00:00 GMT-0400(Hora est. Sudamérica Pacífico)

new Date(service.today().getTime())

2016 年 5 月 12 日星期四 00:00:00 GMT-0300(Hora verano Sudamérica Pacífico)

new Date(service.plazo * service.DAY_MILLISECONDS)

1970 年 1 月 7 日星期三 21:00:00 GMT-0300(Hora verano Sudamérica Pacífico)

为什么

  • 新日期()"
  • 新日期(service.today().getTime())
  • 新日期(service.plazo * service.DAY_MILLISECONDS)

是 GMT-0300 和

  • 新日期(service.today().getTime() + (service.plazo * service.DAY_MILLISECONDS))

是 GMT-0400

Chrome 版本出错:50.0.2661.94 m

Chrome 版本 46.0.2490.86(64 位)都是 GMT-0400 :)

【问题讨论】:

  • 您发布的代码是您正在运行的实际代码吗?我问是因为您在定义之前调用 service.today() 。如果您在此处发布一个可运行的 sn-p 来显示该问题,那就太好了。如果您更改了系统的时区偏移量,您应该会看到不同的时区名称。

标签: javascript google-chrome date constructor


【解决方案1】:

由于时间变化(标准时间到夏令时),timeZoneOffset 将根据您获得的日期所在的时间段而有所不同。

我猜您所在国家/地区的夏令时将于 5 月 14 日结束。这意味着 5 月 14 日之前的日期将是 GMT -0300,但使用 Hora verano Sudamérica Pacífico,之后您将拥有 -0400,但使用 Hora est. Sudamérica Pacífico .

这样,您将获得您所在国家/地区在特定日期的当前时间。时间更改日期和时区信息通常取决于操作系统,Chrome 依赖于您的系统设置来确定它们。

【讨论】:

  • 我想你已经解决了。我无法理解 OP,GMT-0300 (Hora est. Sudamérica Pacífico) 令人困惑。
  • 谢谢。我的笔记本电脑中有自动时区配置,我未来的日期有不同的 typeZone GMT-0400。
猜你喜欢
  • 2013-09-17
  • 2011-01-13
  • 1970-01-01
  • 1970-01-01
  • 2011-03-08
  • 1970-01-01
  • 2017-12-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多