我的服务器安装了“美国/圣保罗”TimeZone,今年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
后:2012年10月20日星期六:
之前:2012年10月20日星期六:
后:10月21日太阳01:00:00 BRST 2012
前:10月21日太阳01:00:00 BRST 2012
后:10月22日星期一01:00:00 BRST 2012
当我做这个d1时,添加(Calendar.DAY_OF_MONTH,1)只是一天,而不是小时,对吗?我怎么能避免这一点,并保持原来的时间,我不想使用GMT-3,我需要现在是DST。
谢斯
发布于 2014-10-08 19:00:58
由于Sao_paulo在第21天没有午夜,那么21点将从凌晨1点开始。对于第22天,你加一天,然后它保持凌晨1,等等。为了使之正确,你应该从19天开始计算,而不是在前一天计算。
https://stackoverflow.com/questions/13730438
复制相似问题