2012-04-09 71 views
-2
方式

可能重複:
Compare dates in java什麼是最簡單的比較兩個日期

我得到的YYYY-MM-DD格式從服務器兩個日期。我必須比較這兩個日期。我用compareTo()方法來比較兩個日期。假設我的服務器將始終以yyyy-MM-dd格式返回非空值,有什麼更容易的方法來比較兩個日期?

定義方法

void compareTwoDates(String startDate, String endDate){ 
     switch(startDate.compareTo(endDate)){ 
      case -1: 
       //START DATE IS BIGGER THAN END DATE 
       System.out.println(endDate+" IS BIGGER THAN "+startDate); 
       break; 
      case 0: 
       //BOTH DATE ARE SAME 
       System.out.println("SAME DATE"); 
       break; 
      case 1: 
       //END DATE IS BIGGER 
       System.out.println(startDate+" IS BIGGER THAN "+endDate); 
       break; 
     } 
    } 

通話使用方法如下方式

compareTwoDates("2012-05-06", "2012-04-08"); 
compareTwoDates("2012-04-09", "2012-04-09"); 
compareTwoDates("2012-04-09", "2011-05-10"); 
+1

你的問題被關閉之前,還有一兩件事:你不能用'這裏之開關,因爲根據'compareTo'收縮它可以返回任何正值或負值,不一定'1'和'-1'。 – 2012-04-09 12:01:33

+0

*「什麼是最簡單的方法..」*聘請具有相關經驗的人(通常是該問題的答案)。我們其他人需要做研究,閱讀教程並撰寫測試用例。你知道,就像一個程序員一樣。 – 2012-04-09 12:08:18

+0

@Andrew Thompson,雖然我可以負擔得起你,但我不會僱用你。 – 2012-04-09 12:23:50

回答

0

使用的java.util.Calendar講座之前和之後會做工作。

用於解析字符串使用java.text.SimpleDateFormat的

1

,好像他們是日期不比較字符串...只有痛苦和苦難可能來自做法。

喜歡的東西:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 
    Date d1 = sdf.parse("2012-04-04"); 
    Date d2 = sdf.parse("2012-04-05"); 

將滿足你的需求,那麼你可以使用日期的compareTo方法,因爲他們應該需要比較的會比較日期,而不是爲沒有上下文字符串值年,月等

+0

字符串比較工作得很好,但是,如果字符串總是yyyy-MM-dd。 – Thilo 2012-04-09 12:09:48

+0

可能有點誇張,但..「999-01-01」.compareTo(「2011-02-02」)不起作用。 – pcalcao 2012-04-09 12:40:02

1

檢查此示例。

 if(date1.after(date2)){ 
      System.out.println("Date1 is after Date2"); 
     } 
     if(date1.before(date2)){ 
      System.out.println("Date1 is before Date2"); 
     } 
     if(date1.equals(date2)){ 
      System.out.println("Date1 is equal Date2"); 
     }