0
import java.util.GregorianCalendar;

public class FullYear {

    public static void main(String[] args) {

        GregorianCalendar cal1 = new GregorianCalendar(2011,2,9); 
        GregorianCalendar cal2 = new GregorianCalendar(2011,2,12); 
        long ms1 = cal1.getTime().getTime(); 
        long ms2 = cal2.getTime().getTime(); 
        long difMs = ms2-ms1; 
        long msPerDay = 1000*60*60*24; 

        System.out.println(difMs);
        System.out.println(msPerDay);

        double days = difMs / msPerDay;

        System.out.println(days);

        GregorianCalendar cal11 = new GregorianCalendar(2011,2,9); 
        GregorianCalendar cal22 = new GregorianCalendar(2011,2,19); 
        long ms11 = cal11.getTime().getTime(); 
        long ms22 = cal22.getTime().getTime(); 
        long difMs1 = ms22-ms11; 
        long msPerDay1 = 1000*60*60*24; 

        System.out.println(difMs1);
        System.out.println(msPerDay1);

        double days2 = difMs1 / msPerDay1;

        System.out.println(days2);

    }

}

这会输出 3.0 和 9.0(我希望是 10!!)。这会进行整数除法,因此 9.0 实际上是 9.95。然而,我的问题是……

  • 2 月 9 日和 2 月 19 日之间的差异是 860400000 毫秒,即 239 小时。
  • 2 月 9 日和 2 月 12 日之间的差异是 259200000 毫秒,即 72 小时。

第一个差异不应该是 240 小时吗?

4

1 回答 1

5

您正在计算3 月的差异,而不是 2 月,并且您已经吞噬了夏令时的开始。

于 2012-07-12T18:01:35.753 回答