2012-09-12 61 views
0
try { 
      Date sysDate = new SimpleDateFormat("dd/mm/yyyy").parse(_sysDate); 
      Date userDate = new SimpleDateFormat("dd/mm/yyyy").parse(_userDate); 
      if (userDate.compareTo(sysDate) > 0) 
       return false; 
        else 
          return true; 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

上面是我的下面的代碼片段來檢查兩個日期是否更大。 當我給: sysdate = 12/9/2012和userdate = 11/9/2012或10/8/2012或15/9/2011它是給出正確的輸出SimpleDateFormat和日期比較沒有給出正確的輸出

但是,當我給: sysdate = 12/9/2012和userdate = 13/8/2012或15/7/2012或16/6/2012它給出不正確的輸出。 根據我的分析,如果我在1月12日至8月12日之間選擇任意月份並選擇比當前day_of_month更多的day_of_month(即0,1,2,...,31)(本例中12),我總是得到一個不正確的輸出。

請建議任何可能的解決方案。

回答

4

的問題是,其應爲 「DD/MM/YYYY」(用大寫 「MM」 爲一個月),而不是 「DD /月/年」(與小 「毫米」,這意味着所述圖案分鐘)。

所以,它應該是如下 -

try { 
    DateFormat df = new SimpleDateFormat("dd/MM/yyyy"); 
    Date sysDate = df.parse(_sysDate); 
    Date userDate = df.parse(_userDate); 
    //... 
+2

這可能值得詳細解釋,以解釋當前字符串的使用方式 - 即填寫*分鐘*而不是幾個月。 –

+0

Kodos Amigo它的工作 – Debopam

+0

@BheshGurung:除了你在代碼示例中還顯示'mm'而不是'MM'。 – Squonk

1
try { 
      Date sysDate = new SimpleDateFormat("dd/MM/yyyy").parse(_sysDate); 
      Date userDate = new SimpleDateFormat("dd/MM/yyyy").parse(_userDate); 
      if (userDate.compareTo(sysDate) > 0) 
       return false; 
        else 
          return true; 
     } catch (ParseException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

的日期模式是錯誤的DD/MM/YYYY的替代 DD /MM/YYYY