比较Java中的日期

eur*_*ica 0 java string compare date compareto

我已经阅读了日期函数,但我不能想出解决问题的最佳方法.

我有几个数据库的日期String,我想将它与当前日期进行比较.我正在使用compareTo,但使用此功能有一个问题,我想这是因为我在比较字符串.

这是我的功能:

public int dateCompare(String today, String date2){
    return today.compareTo(date2);
}
Run Code Online (Sandbox Code Playgroud)

当我在样本日期使用它时:

dateCompare("04/19/2013","04/18/2013");
Run Code Online (Sandbox Code Playgroud)

它返回1,当我将第一个参数的值更改为"04/20/2013"它仍然返回1.

请帮忙...

Him*_*waj 5

故障在于,

public int dateCompare(String today, String date2){
    return today.compareTo(date2);
}
Run Code Online (Sandbox Code Playgroud)

您将此视为dateComparison,但请查看方法参数String,String.

所以你实际上在比较两个字符串.

你应该首先将这些字符串转换为日期......

喜欢,

public Date parseDate(String dateStr) {
    DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
    return df.parse (dateStr);
}

public int dateCompare(String today, String date2){
    return (parseDate(today)).compareTo(parseDate(date2));
}
Run Code Online (Sandbox Code Playgroud)

编辑:

修改为多种格式:

public Date parseDate(String dateStr, String parsingFormat) throws SomeParsingException {
    DateFormat df = new SimpleDateFormat("MM/dd/yyyy");
    return df.parse (dateStr);
}

public Date parseDate (String dateStr) throws SomeException  {
    Date d1 = null;
    try {
        d1 = parseDate(dateStr, "MM/dd/yyyy");
    } catch (SomeParsingException  ex) {
        try {
           d1 = parseDate(dateStr, "MM-dd-yyyy");

        } catch (SomeParsingException  ex) {
             try {
                 d1 = parseDate(dateStr, "MM.dd.yyyy");
             } catch(SomeParsingException  ex) {
                 throw SomeException ("Unparseable date");
             }
        }
    }
   return d1;
}
Run Code Online (Sandbox Code Playgroud)