2

2013 年 2 月 13 日午後 11 時にマークされた日付オブジェクトがあるとします。たとえば、午前 3 時に次の最も早い日付オブジェクトを取得しようとしています。この場合、2013 年 2 月 14 日午前 3 時になります。

日付フィールドに 1 日を追加し、時刻を午前 3:00 に設定するだけでこれを行うことができますが、次の場合はどうでしょう。

2013 年 2 月 14 日の午前 1 時にマークされた日付オブジェクトがあります。ここでは、日付を追加する必要はなく、単純に時間を設定します。

これを行うエレガントな方法はありますか?以下は私がこれまでに行ったことであり、うまくいくと思いますが、これを簡単にするAPIがあるかどうか疑問に思っていました. getNextSoonestDate() などのようなもの

Calendar calendar = Calendar.getInstance();

//myDate is some arbitrary date, like one of the examples posted above (i.e. feb 13th 11pm)
calendar.setTime(myDate);

//set the calender to be 3am
calendar.set(Calendar.HOUR_OF_DAY, 3);

//check if this comes before my current date, if so we know we need to add a day
if (calendar.getTime().before(myDate)){
    calendar.add(Calendar.DAY_OF_YEAR, 1);
}
4

2 に答える 2

2

現在の日付 (渡された日付) の時刻を確認し、それが 3 以上かどうかを調べます。そうであれば、次の日付を取ります。そうでなければ今日..そうしませんか?正確に 3:00:00 に同じ日付が必要な場合、結果が得られない場合があります。

于 2013-02-13T16:40:34.927 に答える