2013-05-07 98 views
1

我比較兩個日期之一是一個普通日期和其他從公曆獲得。
當我試圖比較這兩個日期它給結果假,
後來我意識到,這是由於時間差。因此,即使兩個日期是相同的,不同的時間,我想它返回後者的真或設置日期default.ie,0只有日期的日曆只有在日曆沒有時間的情況下才會出現?

Eg: Start Date : Wed May 08 00:00:00 CAT 2013 
End Date : Wed May 08 00:40:30 CAT 2013  

我試過壓延API,設定(年,月,日,小時,分鐘,第二);但設定年,月和日,我不知道。請幫我解決這個問題。

+1

這些問題的可能重複:http://stackoverflow.com/questions/2517709/java-comparing-two-dates-to-see-if-the--are-in-the-same-day或http: //stackoverflow.com/questions/9474121/i-want-to-get-year-month-day-etc-from- java-date-to-compare-with-gregorian-calen – 2013-05-07 22:51:38

回答

5

您可以使用簡單的java代碼來獲取沒有時間的日期,如下所示。此方法適用於任何日期設置的時間部分爲00:00:00

private Date getDateWithOutTime(Date targetDate) { 
    Calendar newDate = Calendar.getInstance(); 
    newDate.setLenient(false); 
    newDate.setTime(targetDate); 
    newDate.set(Calendar.HOUR_OF_DAY, 0); 
    newDate.set(Calendar.MINUTE,0); 
    newDate.set(Calendar.SECOND,0); 
    newDate.set(Calendar.MILLISECOND,0); 

    return newDate.getTime(); 

} 
+0

有可能時間的改變實際上可能會影響日期的後退或前進。我會親自考慮在午夜前後1毫秒設置時間,但這只是我+1 – MadProgrammer 2013-05-07 23:56:09

+0

@MadProgrammer上面的代碼不會滾動日期,它只會爲日期部分設置時間。 – sagar 2013-05-07 23:58:09

+0

並根據日曆的規則它「可能」推出的日期 - 並沒有說這是一個很有可能引擎蓋,只是一種可能性;) - 我想就像試圖設置DAY_OF_MONTH爲31日曆時設置爲2月,日曆將自動... – MadProgrammer 2013-05-08 00:01:58

0

你能讓米利斯來天,比較他們,這會比基於日曆的版本快

long t1 = date1.getTime()/86400000 * 86400000; 
    long t2 = date2.getTime()/86400000 * 86400000; 
    return Long.compare(t1, t2); 
+0

方法比較(長,長)是未定義的類型長 – 2013-05-08 10:33:03

+0

它是從1.7開始,嘗試返回t1> t2? 1:t1 2013-05-08 10:36:58

1

嘗試

 Calendar cal = Calendar.getInstance(); 
     cal.set(2014,Calendar.JUNE,29,0,0,0);   
     date = cal.getTime(); 
+1

請指出*爲什麼*這回答你的問題。這個問題被標記,因爲它的主要內容只是代碼。 – 2014-06-23 23:16:26

+0

此解決方案無效,甚至存在風險,因爲它保留了毫秒級的部分,因此無法與其他「日期時間」值進行準確比較 – jpe 2017-01-02 16:14:08

相關問題