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

上記は、大きいかどうかにかかわらず2つの日付をチェックするための次のコードスニペットです。私が与えているとき: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それは間違った出力を与えています。私の分析では、12年1月から12年8月までの任意の月を選択し、現在のday_of_month(この場合は12)よりも多くのday_of_month(つまり、0,1,2、...、31)を選択すると、この時点に到達しました。 )、私はいつも間違った出力を受け取ります。

考えられる解決策を提案してください。

4

3 に答える 3

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);
    //... 
于 2012-09-12T13:38:39.693 に答える
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で間違っています。

于 2012-09-12T13:42:19.143 に答える
-3

dd/MM/yyyydd / mm / yyyyの代わりに、このデータ形式の変更を参照してください。

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

于 2012-09-12T13:37:53.617 に答える