3

Date を同じ日の時刻「23:59:59.999」に設定するメソッドを作成したいだけです。だから私はこれを作った:

public static Date date235959(Date date) {
    Calendar c = Calendar.getInstance();
    c.setTime(date);
    c.set(Calendar.HOUR, 23);
    c.set(Calendar.MINUTE, 59);
    c.set(Calendar.SECOND, 59);
    c.set(Calendar.MILLISECOND, 999);
    //c.set(Calendar.AM_PM, Calendar.PM);

    return c.getTime();
}

私が実行すると:

Date d = new Date();
d=date235959(d);
System.out.println(d.toString());
d=date235959(d);
System.out.println(d.toString());

Tue
Sep 17 23:59:59 BRT 2013
Tue Sep 17 23:59:59 BRT 2013

しかし、出力は
Tue Sep 17 23:59:59 BRT 2013
Wed Sep 18 11:59:59 BRT 2013 でした。

なぜそれが起こったのですか?どうすれば修正できますか?

4

2 に答える 2

5

Calendar.HOUR12 時間制に使用されます。Calendar.HOUR_OF_DAY代わりに使用するか、12 時間制の正しい値を入力してください。c.set(Calendar.HOUR, 11);

于 2013-09-17T12:03:44.660 に答える