思路:
(1) 通過(guò)Calendar類(lèi)來(lái)計(jì)算
????????Calendar c1 = Calendar.getInstance();
? ? ? ? Calendar c2= Calendar.getInstance();
? ? ? ? c1.setTime(date1);
? ? ? ? c2.setTime(date2);
? ? ? ? int day1 = c1.get(Calendar.DAY_OF_YEAR);
? ? ? ? int day2 = c2.get(Calendar.DAY_OF_YEAR);
? ? ? ? int? year1 = c1.get(Calendar.YEAR);
? ? ? ? int year2 = c2.get(Calendar.YEAR);
? ? ? ? if(year1 != year2){
????????????????int timeStance =0;
? ? ? ? ? ????? for(int i=year1; i<year2; i++){
//? ? ? ? ? ? ? ? 判斷每一年是不是閏年
? ? ? ? ? ? ? ? if(i%4==0&& i%100!=0 || i%400==0){
????????????????????????timeStance +=366;
? ? ? ? ? ? ? ? }else{
????????????????????????timeStance +=365;
? ? ? ? ? ? ? ? }
}
return timeStance+(day2-day1);
? ? ? ? }else{
return day2-day1;
? ? ? ? }
}
(2)通過(guò)timeStamp 計(jì)算
long timeDiff = date2.getTime() - date1.getTime();
int days = (int)(timeDiff/(1000*3600*24))
在計(jì)算days的時(shí)候 要注意是將最終計(jì)算結(jié)果轉(zhuǎn)換成為int類(lèi)型,而不是將timeDIff轉(zhuǎn)換成int類(lèi)型秘症,因?yàn)閠imeDiff是long轉(zhuǎn)換成int時(shí)會(huì)丟失精度 導(dǎo)致最大值不會(huì)超過(guò)int的最大值
計(jì)算int的最大值 1l<<32? 將1向左移動(dòng)32位忘瓦,然后減去1即可