我的服务器设置了“美洲/圣保罗”时区,今年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());
}
}
我有以下输出:
BEFORE: Fri Oct 19 00:00:00 BRT 2012
AFTER: Sat Oct 20 00:00:00 BRT 2012
BEFORE: Sat Oct 20 00:00:00 BRT 2012
AFTER: Sun Oct 21 01:00:00 BRST 2012
BEFORE: Sun Oct 21 01:00:00 BRST 2012
AFTER: Mon Oct 22 01:00:00 BRST 2012
当我执行 d1.add(Calendar.DAY_OF_MONTH, 1) 只有日期应该增加而不是时间,对吧?我该如何避免这种情况并保持原始时间,我不想使用GMT-3,我需要知道何时是夏令时。
谢谢!