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

2 月ではなく3 月の差を計算していて、夏時間の開始を飲み込んでしまいました。

于 2012-07-12T18:01:35.753 に答える