2012-08-14 76 views
0

可能重複:
How do you subtract Dates in Java?日期減法在Java

我創建Java桌面應用程序。在那個應用程序中,用戶輸入一些日期。所以我使用3party庫「jCalendar.jar」。爲了驗證我想減去兩個日期。有什麼辦法可以在減去java中的兩個日期嗎?

+4

http://joda-time.sourceforge.net/ – Jesper 2012-08-14 14:41:57

+2

你應該看看JodaTime:http://joda-time.sourceforge.net/,也在這個問題:http://stackoverflow.com/questions/ 3526485 /你怎麼減去日期在java – 2012-08-14 14:42:29

回答

2

如果您在使用Java日期或Java日曆,那麼你可以使用類似:

Calendar firstOperand = new GregorianCalendar(); 
Calendar secondOperand = new GregorianCalendar(); 
Calendar result = new GregorianCalendar(); 

result.setTimeInMillis(firstOperand.getTimeInMillis() - secondOperand.getTimeInMillis()); 

編輯: 正如指出的意見,存儲在日曆中的結果將沒有多大意義。您仍然可以使用爲您的操作返回的毫秒數。

如果可能的話,你也可以使用庫來處理這個問題,比如JODA

它可以讓你從兩個日期和更多的東西之間得到seconds/minutes/days/months/etc數量。

+0

這有點奇怪。假設我從2012年8月13日15:41減去2012年8月5日12:34,並將結果放入「日曆」中。你預計什麼日期「Calendar」被設置?減去兩個日期的結果是一段時間,而不是一段時間。 '日曆'不適合持有一定的時間。 – Jesper 2012-08-15 09:51:25

+0

你說的對,雖然有點奇怪,但是在那一刻我仍然可以以不同的方式使用毫秒,而不是在日曆上設置。 – Josejulio 2012-08-15 15:34:06

+0

這有助於我的工作。謝謝! – Tung 2016-10-14 16:35:34

2

我建議看看Joda Time,它是Java中日期處理的實際標準。給定兩個java.util.DatesjavaDate1javaDate2

DateTime d1 = new DateTime(javaDate1); 
DateTime d2 = new DateTime(javaDate2); 

Period diff = new Period(d1, d2); 

現在,您可以查詢diff對象的不同,分成它的組成成分(年,月,日等)。有關更多信息,請參閱喬達時間period guide

4

Java不給力,你可以看看開源:試試JODA

DateTime dt1 = new DateTime(2000, 1, 1, 0, 0, 0, 0); 
DateTime dt2 = new DateTime(2010, 1, 1, 0, 0, 0, 0); 
int noOfdays = Days.daysBetween(dt1, dt2).getDays(); 
0

您可以使用java.util.GregorianCalendar

創建這個類的一個實例,然後調用時刻設定()方法來設置你的約會。最後使用這個類的方法。