0

私はすでに日付関数を読んでいますが、私の問題を解決する最善の方法は考えられません。

データベースからいくつかの日付がありString、それを5月の現在の日付と比較したいと思います。を使用してcompareToいますが、この関数を使用すると問題が発生します。文字列を比較していたためだと思います。

これは私の機能です:

public int dateCompare(String today, String date2){
    return today.compareTo(date2);
}

そして、サンプルの日付で使用すると:

dateCompare("04/19/2013","04/18/2013");

それは1を返し、最初のパラメータの値を変更し"04/20/2013"ても1を返します。

助けてください...

4

3 に答える 3

5

障害はアプローチにあり、

public int dateCompare(String today, String date2){
    return today.compareTo(date2);
}

これを dateComparison と考えていますが、メソッドの引数 String、String を見てください。

したがって、実際には2つの文字列を比較しています。

まず、これらの文字列を日付に変換する必要があります...

お気に入り、

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));
}

編集 :

複数のフォーマット用に変更:

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;
}
于 2013-04-18T04:26:45.963 に答える