可能重複:
Calculating difference in dates in Java
How can I calculate a time span in Java and format the output?字符串轉換日期爲Java Date對象
說你給兩個日期作爲字符串,它們都是這種格式8/11/11 9:16:36 PM
我怎麼會去關於將它們轉換爲java日期對象,以便我可以計算兩個日期之間的差異?
可能重複:
Calculating difference in dates in Java
How can I calculate a time span in Java and format the output?字符串轉換日期爲Java Date對象
說你給兩個日期作爲字符串,它們都是這種格式8/11/11 9:16:36 PM
我怎麼會去關於將它們轉換爲java日期對象,以便我可以計算兩個日期之間的差異?
只要這兩個時間都是GMT/UTC,你可以做date1.getTime() - date2.getTime()
,然後將結果除以86400000得到天數。其餘的可能很直觀。
編輯 - 基於編輯的問題
將字符串轉換成日期,使用SimpleDateFormat類。
String yourDateString = "8/11/11 9:16:36 PM";
SimpleDateFormat format =
new SimpleDateFormat("MM/dd/yy HH:mm:ss a");
Date yourDate = format.parse(yourDateString);
大多數Date的getter都被棄用,取而代之的是Calendar方法。你可以這樣做
Date date1, date2; //initialized elsewhere
Calendar day1 = new Calendar();
day1.setTime(date1)
Calendar day2 = new Calendar();
day2.setTime(date2);
int yearDiff, monthDiff, dayDiff, hourDiff, minuteDiff, secondDiff;
yearDiff = Math.abs(day1.get(Calendar.YEAR)-day2.get(Calendar.YEAR));
monthDiff = Math.abs(day1.get(Calendar.MONTH)-day2.get(Calendar.MONTH));
dayDiff = Math.abs(day1.get(Calendar.DAY_OF_YEAR)-day2.get(Calendar.DAY_OF_YEAR));
hourDiff = Math.abs(day1.get(Calendar.HOUR_OF_DAY)-day2.get(Calendar.HOUR_OF_DAY));
minuteDiff = Math.abs(day1.get(Calendar.MINUTE)-day2.get(Calendar.MINUTE));
secondDiff = Math.abs(day1.get(Calendar.SECOND)-day2.get(Calendar.SECOND));
然後,你可以做任何你喜歡的數字。
非常感謝。是的,我注意到很多日期方法已被棄用。我最終在這裏使用你的方法,它使事情變得非常簡單,我感謝你的幫助! +1 – DRiFTy
定義與您的格式相匹配的SimpleDateFormat(java doc非常直接),然後使用parse方法獲取適當的Date對象,從中可以輕鬆計算兩個日期之間的差異。 一旦你有這種差異,最好的可能是「手動」計算天數/小時/分鐘/秒的數量,儘管可能再次使用SimpleDateFormat(或其他格式化機制)來顯示適當的值一種通用的方式。
非常感謝你的工作! – DRiFTy