两个日期之间的比较没有显示正确的结果

时间:2013-04-09 09:09:33

标签: java

在我的Android应用程序中,我需要找到哪个日期更大或更小。我使用了以下代码。这段代码运行良好,但有时它显示错误的输出。帮助

    String strDate1 = "3/9/2013";   
    String strDate2 = "4/6/2013";   

    SimpleDateFormat sdf = new SimpleDateFormat( "m/d/yyyy" );   
    java.util.Date d1;
    java.util.Date d2;
    try {
        d1 = sdf.parse( strDate1 );
        d2 = sdf.parse( strDate2 );   
        if  ( d1.after(d2))  
        {   
              System.out.println( "d1 is after d2" ); 
        }   
        else if  ( d1.before(d2) )
        {   

           System.out.println( "d1 is before d2" ); 
        }   
        else  
        {   
           System.out.println( "d1 is equal to d2" );   
        }  

    } catch (ParseException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }   

对于上面的代码,我得到输出为“d1在d2之后”。但真实的是“d1在d2之前”。如果我对此有任何错误,请提示。

4 个答案:

答案 0 :(得分:5)

你使用了错误的月份格式。

SimpleDateFormat sdf = new SimpleDateFormat( "M/d/yyyy" );

m是几小时的分钟 M是一年中的一个月

答案 1 :(得分:0)

尝试将日期格式更改为以下

SimpleDateFormat sdf = new SimpleDateFormat( "M/d/yyyy" );

答案 2 :(得分:0)

您需要使用M,而不是m提供的分钟数。

SimpleDateFormat sdf = new SimpleDateFormat( "M/d/yyyy" );   

答案 3 :(得分:0)

SimpleDateFormat这表示小m是分钟,大写M是月份,所以尝试改变它。