1

私は何年も Java でプログラミングしていませんが、以前に書いたプログラムを変更する必要があります。このプログラムでは、QIF ファイルを読み取り、最大日付 (Dmm-dd-yyyy) を持つ qif レコードを見つける必要があります。私のプログラムでこれを機能させることができなかったので、私が抱えている問題を実証するための簡単なテストを書きました。リストやコレクションなど、これを行う他の方法があると思います。しかし、SimpleDateFormat を使用してもうまくいかない理由を知りたいです。出力で、このメソッドは 7 月の最大値を生成しますが、8 月の日付はすべて無視しているように見えることに注意してください。

ありがとう、マイク

import java.text.SimpleDateFormat; java.util.Date をインポートします。

class DateParser {

    public static void main(String[] args) {
        SimpleDateFormat sdf = new SimpleDateFormat("mm-dd-yyyy");
        Date nextDate = null;
        Date maxDate = null;
        String nextStrDate = null;
        String maxStrDate = null;

        //Fill date array.
        String date[] = {"07-14-2014","07-22-2014","07-31-2014",
                         "08-01-2014","08-04-2014","08-06-2014"};

        try {
            //Start with early maximum date.
            maxDate = sdf.parse("01-01-1800");
            // Find Max date in array.
            for (int i=0; i<6; ++i) {
                nextStrDate = date[i];
                nextDate = sdf.parse(nextStrDate);
                if(nextDate.after(maxDate)){
                    maxStrDate = nextStrDate;
                    maxDate = nextDate;
                }
                System.out.println( "Next Date = " + nextStrDate);
            }
            System.out.println("\nMax Date = " + maxStrDate);
        } catch (Exception e) { 
        System.out.println("Got error:" + e);
        }
    }
}

OUTPUT

Next Date = 07-14-2014
Next Date = 07-22-2014
Next Date = 07-31-2014
Next Date = 08-01-2014
Next Date = 08-04-2014
Next Date = 08-06-2014

Max Date = 07-31-2014
4

2 に答える 2

1

あなたのフォーマットは間違っています、これは

SimpleDateFormat sdf = new SimpleDateFormat("mm-dd-yyyy");

する必要があります

SimpleDateFormat sdf = new SimpleDateFormat("MM-dd-yyyy");

なぜなら(SimpleDateFormatドキュメントによると)、

Letter    Date or Time Component  Presentation    Examples
...
M         Month in year           Month           July; Jul; 07
...
m         Minute in hour          Number          30
于 2014-08-28T01:07:29.520 に答える
1

Java ドキュメントから....

m 分

あなたが欲しいのは

M 月

mm-dd-yyyyに変更MM-dd-yyyy

于 2014-08-28T01:08:04.177 に答える