2012-09-26 28 views
1

有沒有一種方法可以將通過計算兩個日期之間的差異計算出來的天數組織成不同的部分,例如爲364天,這將是:0年,11個月,30天,小時,分鐘等 我認爲使用邏輯運算符可能會像%和/但因爲不同的月份有不同的天數和一些年份閏年我'我不知道該怎麼做。任何幫助將非常感激。我的代碼:將年數,月,日,小時的天數組織到不同的部分。 Java

import java.util.*; 

public class CleanDate { 

    public static void main(String[] args) { 
     Calendar cDate = GregorianCalendar.getInstance(); 
     cDate.set(2011, 0, 31, 00, 00, 00); 
     Date date1 = cDate.getTime(); 
     Date date2 = new Date(); 
     Calendar calendar1 = Calendar.getInstance(); 
     Calendar calendar2 = Calendar.getInstance(); 
     calendar1.setTime(date1); 
     calendar2.setTime(date2); 
     long milliseconds1 = calendar1.getTimeInMillis(); 
     long milliseconds2 = calendar2.getTimeInMillis(); 
     long diff = milliseconds2 - milliseconds1; 
     long diffSeconds = diff/1000; 
     long diffMinutes = diff/(60 * 1000); 
     long diffHours = diff/(60 * 60 * 1000); 
     long diffDays = diff/(24 * 60 * 60 * 1000); 
     System.out.println("Time in minutes: " + diffMinutes + " minutes."); 
     System.out.println("Time in hours: " + diffHours + " hours."); 
     System.out.println("Time in days: " + diffDays + " days."); 
    } 
} 
+1

學習和使用JODA時間。這不是一個好主意。 – duffymo

+0

需要多長時間_ _「兩個月,十一天」_? –

+0

我希望時間段是用戶定義的,因此用戶輸入日期並輸出自該日期以來的年,月,日。我會研究喬達時間。謝謝您的幫助 – Will

回答

3

你可以有效地使用約達時間是這樣的: Interval允許獲得兩個日期之間的時間間隔。

DateTime end = new DateTime(2006, 1, 1, 0, 0, 0, 0); 
Interval interval = new Interval(start, end); 
Period period = interval.toPeriod(); 
System.out.println(period.getYears()+" years, " 
period.getMonths()+" months, "+period.getWeeks()+" weeks, "+period.getDays()+", days"); 
相關問題