【发布时间】:2013-01-28 03:42:32
【问题描述】:
OSX 上的 Safari 认为 2013 年 10 月 6 日是澳大利亚的星期六。不是,实际上是星期天。
要重现此问题,只需将您的时区设置为澳大利亚悉尼,在 Safari 中弹出开发控制台,然后输入新日期(“2013/10/06”)。你会得到这个:
现在更改为美国西雅图,您将得到:
这个问题也发生在澳大利亚墨尔本,但不发生在更北部的城市,例如布里斯班(适合 zoning for Australian DST),或者我在世界各地测试过的少数其他城市。
现在,恰好 2013 年 10 月 6 日是start of daylight savings time in Sydney.。其他年份的其他 DST 开始日期也犯了同样的错误。 DST 结束日期似乎没有问题。 PDT 时区的 DST 开始日期似乎没有问题。此外,Chrome 和 Firefox 也不会出现此问题。
我已经在两台不同的 Mac 上测试了其中的大部分内容,一台在带有 Safari 5.1.7 的 Snow Leopard 上,另一台在带有 Safari 6.0.2 的 Lion 上。
所以问题是——这是一个错误还是有某种合理的原因?
【问题讨论】:
-
我在 Win7 下的 Safari 上的相同行为
-
试试:
d = new Date("2013-10-06"); d.setMinutes(d.getMinutes() + d.getTimezoneOffset()) -
我的窍门是使用
new Date(datestring+" 12:00").getDay(),它将时间固定在一天中,远离所有 DST 开关 (worldtimezone.com/daylight.html)。 -
@jlarson 你有更多关于这个/链接到苹果提交的错误的信息吗?不幸的是,我在 OSX Mavericks 和 iOS7 上都看到了与 Safari 相同的问题...
-
@Boycs 这是问题 ID #13201479。我没有从他们的错误报告者那里看到直接链接,但它应该通过搜索出现。 (呃,Apple 的开发者网络东西还是那么 *@!#)
标签: javascript safari timezone