public class test01 {
public static void main(String[] args) {
Calendar c1 = Calendar.getInstance();
Calendar c2 = Calendar.getInstance();
c1.set(2019,1,1);
c2.set(2019,1,1);
long d1 = c1.getTimeInMillis();
long d2 = c2.getTimeInMillis();
System.out.println(d1-d2);
}
}
程序执行有先后顺序的,两个对象时间肯定不一样啊
你如何理解为一样的呢。获得当前毫秒时间的方法是动态的,并不像通常定义的普通方法一样。那个方法是时时获取当前毫秒时间的。所以每次调用的时候,肯定得到的结果一般不相同。
程序从上往下执行 你并没有设置毫秒 只设置到日 如果非要=0那你就代码改为如下:
public class test01 {
public static void main(String[] args) {
Calendar c1 = Calendar.getInstance();//使用默认时区和区域设置获取日历。
Calendar c2 = Calendar.getInstance();
c1.set(2019, 1, 1);//设置日历字段的值 YEAR , MONTH和 DAY_OF_MONTH
c2.set(2019, 1, 1);
c1.setTimeInMillis(1);
c2.setTimeInMillis(1);
long date1 = c1.getTimeInMillis();
long date2 = c2.getTimeInMillis();
System.out.println(date1 - date2);
}
}
为他们设置毫秒差
你得set 2019 1 1 0 0 0 0
以上的各位博主已经回答的很明确了。你是精确到天的数据用来比对毫秒,所以产生上面的现象。至于为什么会这样,看下Calendar.getTimeInMillis()方法源码就有个大概了解了哈。