35

Javaで現在の日付からn日を減算したい。

それ、どうやったら出来るの?

4

5 に答える 5

80

カレンダーを使用する必要はありません。タイムスタンプで遊ぶことができます:

Date d = initDate();//intialize your date to any date 
Date dateBefore = new Date(d.getTime() - n * 24 * 3600 * 1000 l ); //Subtract n days   

更新 1000 の終わりまでに長い間「l」を追加することを忘れないでください。

以下の警告を考慮してください。

Java の日付にミリ秒を追加する1000*60*60*24と、うるう秒や夏時間などの状況で元の日付に 0 日または 2 日追加されることがあります。1 日だけ追加されることを 100% 確実にする必要がある場合、このソリューションは使用するものではありません。

于 2012-05-29T09:06:00.267 に答える
52

これにより、現在の日付の 10 日が減算されます (Java 8 より前):

int x = -10;
Calendar cal = GregorianCalendar.getInstance();
cal.add( Calendar.DAY_OF_YEAR, x);
Date tenDaysAgo = cal.getTime();

Java 8 を使用している場合は、新しい Date & Time API ( http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html )を利用できます。

LocalDate tenDaysAgo = LocalDate.now().minusDays(10);

新しい型から古い型への変換、およびその逆の変換については、次を参照してください: java.time.LocalDateTime と java.util.Date の間の変換

于 2012-05-29T09:00:01.707 に答える
7

私はこの完璧な解決策を見つけました。役に立つかもしれません。必要に応じて直接フォーマットを取得できます。

Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, -90); // I just want date before 90 days. you can give that you want.

SimpleDateFormat s = new SimpleDateFormat("yyyy-MM-dd"); // you can specify your format here...
Log.d("DATE","Date before 90 Days: " + s.format(new Date(cal.getTimeInMillis())));

ありがとう。

于 2014-12-26T07:17:17.293 に答える
-1

@Houcem Berrayanaが言うように

使用したい場合はn>24、次のようなコードを使用できます。

Date dateBefore = new Date((d.getTime() - n * 24 * 3600 * 1000) - n * 24 * 3600 * 1000); 

過去 30 日間の日付を検索する場合は、次のようにします。

Date dateBefore = new Date((d.getTime() - 24 * 24 * 3600 * 1000) - 6 * 24 * 3600 * 1000); 
于 2015-05-27T06:35:20.043 に答える