1

私は次のものを持っています:

    Date now = new Date();
    Date futureDate = new Date(now.getYear(), now.getMonth(), now.getDay() + 30);

現在の日付 (今) に基づいて、将来の日付の値を 30 日後に設定したいと考えています。

これをデバッグすると、今が正しい日付で、futureDate は次のようになります。

Sat Jan 05 00:00:00 EST 2013

今日の日付、now の値は、Sat Dec 29 17:31:58 EST 2012 です。

これは私には意味がありませんか?

私はutil.Dateを使用しています。

4

5 に答える 5

7

getDay()月の日ではなく、曜日を返すためです。

だからあなたの

now.getDay() + 30

土曜日 + 30 = 6 + 30 = 12 月 36 日 = 1 月 5 日

簡単な修正は、コードを次のものに置き換えることです。

now.getDate() + 30

しかし、他の人がすでに示唆しているように、java.util.Date一種の非推奨です。そして、使用する必要がありますCalendar.add()。したがって、コードは次のようになります。

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, +30);
于 2012-12-29T22:37:48.413 に答える
4

Calendar とそのメソッドCalendar .addを使用する必要があります

于 2012-12-29T22:38:31.470 に答える
1

Date を使用したい場合は、日付を追加する作業があらゆる種類の非推奨であることがわかります。

http://docs.oracle.com/javase/7/docs/api/java/util/Date.html

new Date(now.getTime() + (MILLISECONDS_IN_DAY * 30))代わりに使用してください。または、日付にこだわらない場合は、カレンダーを使用してください。

于 2012-12-29T22:46:35.857 に答える
0

そのコンストラクターは非推奨であるだけでなく、有効な日 (1-31) のみを受け入れます。

代わりに java.util.Calendar を使用してみてください。

于 2012-12-29T22:39:40.380 に答える
0

Dateこのような計算には使用しないことになっています。

そんな方におすすめのJodaTimeをご覧ください。

于 2012-12-29T22:41:49.773 に答える