我的服务器设置为“美国/圣保罗”时区,今年 10 月 21 日开始夏令时。
为什么如果我这样做
public static void main(String[] args){
Calendar d1 = new GregorianCalendar(2012, 9, 19, 0, 0, 0);
Calendar d2 = new GregorianCalendar(2012, 9, 22, 0, 0, 0);
while(d1.compareTo(d2) <= 0){
System.out.println("\nBEFORE: " + d1.getTime());
d1.add(Calendar.DAY_OF_MONTH, 1);
System.out.println("AFTER: " + d1.getTime());
}
}
我有这个输出
之前:2012 年 10 月 19 日星期五 00:00:00 BRT
之后:2012 年 10 月 20 日星期六 00:00:00 BRT
之前:2012 年 10 月 20 日星期六 00:00:00 BRT
之后:2012 年 10 月 21 日星期日 01:00:00 BRST
之前:2012 年 10 月 21 日星期日 01:00:00 BRST
之后:2012 年 10 月 22 日星期一 01:00:00 BRST
当我这样做时d1.add(Calendar.DAY_OF_MONTH, 1)应该增加一天而不是小时,对吧?我怎样才能避免这种情况,并保持原来的时间,我不想使用 GMT-3,我现在需要 DST。
谢谢