SimpleDateFormat和Date Comparison没有给出正确的输出

时间:2012-09-12 13:36:03

标签: java android

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它提供了正确的输出

但是当我给予时: sysdate = 12/9/2012和userdate = 13/8/2012或15/7/2012或16/6/2012它提供的输出不正确。 根据我的分析,如果我选择1月12日到8月12日之间的任何一个月,并选择day_of_month(即0,1,2,...,31)超过当前day_of_month(在这种情况下为12) ),我总是得到一个不正确的输出。

请建议任何可能的解决方案。

3 个答案:

答案 0 :(得分:4)

问题是模式应为“dd / MM / yyyy”(月份为大写“MM”)而不是“dd / mm / yyyy”(小“mm”表示分钟)。

所以,应该如下 -

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

答案 1 :(得分: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

答案 2 :(得分:-3)

请参阅此dd/MM/yyyy的数据格式更改,而不是dd / mm / yyyy。

http://docs.oracle.com/javase/1.4.2/docs/api/java/text/SimpleDateFormat.html