我注意到时区和 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 日的对象。每次尝试获取Date
当天 00:00 到 01:00 之间的日期都会导致前一天的日期介于晚上 11:00 到 00:00 之间。
(Windows 用户可以将他们的时区更改为巴西利亚/GMT-03 以体验相同的行为)
将一小时(或一天)添加到此类 date 对象会导致返回相同的 date。
我想这与巴西特定日期的夏令时有关,但我绝对不知道如何处理。
我有一个循环在一个月中的几天(对于日历应用程序)进行迭代,在这种情况下,当到达 2012 年 10 月 20 日时,它显然会永远循环。
一定是我做错了什么,但我不知道如何处理这种情况,因为我猜其他时区也可能发生这种情况。
Date
用Javascript 处理以确保不会发生此类时区/夏令时相关问题的推荐方法是什么?