【问题标题】:java.util.calendar -> Calendar.add() vs daylight savingjava.util.calendar -> Calendar.add() 与夏令时
【发布时间】:2012-11-23 16:54:02
【问题描述】:

我的服务器设置为“美国/圣保罗”时区,今年 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。

谢谢

【问题讨论】:

标签: time calendar save dst


【解决方案1】:

由于 Sao_paulo 在过渡日 21 日没有午夜,因此 21 日将从凌晨 1 点开始。对于 22 日,您添加一天,然后保持凌晨 1 点,依此类推。为了正确起见,您应该从 19 日开始添加天数,而不是按前一天计算。

【讨论】:

    猜你喜欢
    • 2018-01-09
    • 2019-01-03
    • 1970-01-01
    • 2013-02-18
    • 2011-02-22
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多