2012-09-12 60 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