這裡舉例三個方法 方法三才正確
方法1:
public int daysOfTwo(Calendar befor, Calendar after) {
int day1 = befor.get(Calendar.DAY_OF_YEAR);
int day2 = after.get(Calendar.DAY_OF_YEAR);
return day2 - day1;
}
這個方法其實就只是把2個時間先算出他們在這一年的第幾天,然後做相減動作。
不過我懷疑會有個問題如果1月1號跟12月31日比較會發生什麼事@@"
經過我測試會變負的0.0 天呀@@"
另一個方法2:
public long daysOfTwo(Calendar befor, Calendar after) {
long m = after.getTimeInMillis()-befor.getTimeInMillis();
return m/(24*60*60*1000);
}
不過這方法遇到1月2號AM 1點 跟 1月1號 晚上11點 並不會判斷相差一天。
方法3: 這個OK
public int daysOfTwo(Calendar befor, Calendar after) {
long m = after.getTimeInMillis() - befor.getTimeInMillis();
m=m/(24*60*60*1000);
//判斷是不是同一天
if(m==0 && after.get(Calendar.DAY_OF_YEAR)!=befor.get(Calendar.DAY_OF_YEAR)){
m+=1;
}
return (int)m;
}
此文章參考來源:http://hi.baidu.com/larry1984/blog/item/37646f2b170ba1f3e6cd40f7.html
文章標籤
全站熱搜

變負的? 加個絕對值就好呀(被打)
方法1,你是問"一年裡的第幾天" 這方法無法處理跨年 方法2, 其實你必需把除了天以外的時分秒歸零 也就是說,變成 1/2 0:0:0 和 1/1 0:0:0 的比較,這樣就可以做 86400秒的除法計算 這方法是我正在用的 但是碰到日光節約時間就會不準 因為日光節約時,一天並不是 86400 秒 你的方法3 一樣基於 86400的數學,因此也不用看了 我正在查這個問題