有没有办法在Javascript"Date"对象中表示2012年10月21日



我注意到时区和JavascriptDate对象有些奇怪。

在Linux盒子上尝试这个:

$ TZ='America/Sao_Paulo' js 
js> new Date(2012, 9, 21, 0, 0, 0).toString() 
"Sat Oct 20 2012 23:00:00 GMT-0300 (BRST)"

我发现不可能得到一个代表2012年10月21日的物体。每次尝试在当天00:00到01:00之间获取Date都会导致前一天的日期在晚上11:00到00:00之间。

(Windows用户可能会将时区更改为巴西利亚/GMT-03,以体验相同的行为)

将一小时(或一天)添加到这样的日期对象会导致返回相同的日期

我想这与巴西特定日期的夏令时有关,但我绝对不知道如何处理。

我有一个循环,它在一个月的几天内迭代(对于日历应用程序),在这种情况下,当到达2012年10月20日时,它显然会永远循环。

我一定做错了什么,但我不知道如何处理这种情况,因为我想其他时区也可能发生这种情况。

在Javascript中处理Date的建议方法是什么,以确保不会发生此类与时区/夏令时相关的问题?

这是一个绝对正确的行为。由于夏令时午夜根本不存在于巴西当地时间10月21日。如果你只需要构建一个日历,你可以使用new Date(2012, 9, 21, 0, 0, 0).toUTCString()而不是new Date(2012, 9, 21, 0, 0, 0).toString()和其他UTC方法。

例如,要创建UTC日期,可以使用new Date(Date.UTC(2012, 9, 21, 0, 0, 0));

相关内容

  • 没有找到相关文章

最新更新