會這樣嗎?
//get 2 random dates
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
Date date1 = new Date();
Date date2 = sdf.parse("2014-9-12");
final long msInADay = 24*60*60*1000; //turn a day to ms
//divide time difference by the ms of a day
int difference = (int)((date2.getTime() - date1.getTime())/msInADay);
System.out.println(Math.abs(difference));//Math.abs so you can subtract dates in any order.
編輯更新您的問題後: 你可以這樣做:
static int calcDayDiff(int startY, int startM, int startD, int endY, int endM, int endD){
int result = (startY - endY) * 365;
result += (startM - endM) * 31;
result += (startD - endD);
return Math.abs(result);
}
測試用:System.out.println(calcDayDiff(2014,9,13,2013,8,12));
將打印397
但請注意,這不是因爲一個很好的解決方案不是每個月都包含31
天,而不是每年都有365
。您可以通過在方法中添加一些簡單的邏輯來修復月份日差異,而不是總是乘以31
。既然這是一個任務,我想你可以考慮每年有365
天。
爲什麼沒有任何圖書館? – 2014-09-12 20:54:34
到目前爲止,你有沒有嘗試過任何東西?堆棧溢出不是代碼寫入服務。 – hexafraction 2014-09-12 20:54:37
您使用的是什麼版本的Java? – Teetrinker 2014-09-12 20:55:11