java日期差异拼图

Ell*_*ott 6 java time

我想计算一个日期时间差,但我得到一些奇怪的结果:这是源:

   import java.util.Calendar;
    import java.util.Collections;
    import java.util.Vector;

    public class Main {

        static Calendar dcal = Calendar.getInstance();
    static Calendar ccal = Calendar.getInstance();
    public static void main(String[] args) {
        dcal.set(2011, 1, 27);
        ccal.set(2011,2,1);
        long dtime = dcal.getTimeInMillis();
        long ctime = ccal.getTimeInMillis();
        long diff = ctime - dtime;
        int hours = (int) (diff / (1000 * 60 * 60));
        System.out.println("hours->"+hours);

    }

}
Run Code Online (Sandbox Code Playgroud)

当我将ccal设置为2011年1月31日时,日期差异为96小时,但当我将其设置为2011年2月1日时,日期差异为48小时.怎么会这样?什么是补救措施?

谢谢,

埃利奥特

mae*_*ics 6

如果您正在设置ccal,那么" ccal.set(2011, 1, 31)"日期实际上是2001年3月3日,因为月份基于零并且日历默认滚动.所以48小时(96-48)的差异是正确的,因为3月1日(set(2011,2,1)3月)和3月3 日()之间有两天set(2011,1,31).