Javaで現在の日付からn日を減算したい。
それ、どうやったら出来るの?
カレンダーを使用する必要はありません。タイムスタンプで遊ぶことができます:
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% 確実にする必要がある場合、このソリューションは使用するものではありません。
これにより、現在の日付の 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 の間の変換
私はこの完璧な解決策を見つけました。役に立つかもしれません。必要に応じて直接フォーマットを取得できます。
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())));
ありがとう。
@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);