web-dev-qa-db-ja.com

JavaでDateオブジェクトからX dayを引く方法は?

私は何かをしたいのですが。

Date date = new Date(); // current date
date = date - 300; // substract 300 days from current date and I want to use this "date"

どうやってするの?

111
yetAnotherSE

Java 8以降

Java 8の日時APIの変更には、 LocalDate を使用してください。

LocalDate date = LocalDate.now().minusDays(300);

Java 7以前

Calendar を使用する add() メソッド

Calendar cal = Calendar.getInstance();
cal.setTime(dateInstance);
cal.add(Calendar.DATE, -30);
Date dateBefore30Days = cal.getTime();
228
Jigar Joshi

@JigarJoshiそれは良い答えです、そしてもちろん使用することも@Tim推奨します。 joda-time

私はJava.util.Dateから日数を引くためにより多くの可能性を加えたいだけです。

アパッチコモンズ

1つの可能性は Apache-commons-lang を使うことです。次のように DateUtils を使って行うことができます。

Date dateBefore30Days = DateUtils.addDays(new Date(),-30);

もちろん、日付だけを減算するためにcommons-lang依存関係を追加することはおそらく良い選択肢ではありませんが、すでにcommons-langを使っているのであればそれは良い選択です。 addYearsaddMonthsaddWeeksなどの便利な方法もあります。 api を見てください。

Java 8

もう1つの可能性は、 minusDays(long days) メソッドを使用して、Java 8から新しい LocalDate を利用することです。

LocalDate dateBefore30Days = LocalDate.now(ZoneId.of("Europe/Paris")).minusDays(30);
32
albciff

ここにあるDateTimeライブラリを使用することをお勧めします。 https://www.joda.org/joda-time/

これは私がビルドするほぼすべてのJavaプロジェクトに最初に追加した依存関係の1つです。

日付やカレンダーを必要とするレガシコードがある場合は、それをDateTimeから変換し直すことができます。

そのため、300日を差し引くのは簡単です。

Date date = new Date(); // Or where ever you get it from
Date daysAgo = new DateTime(date).minusDays(300).toDate();
29
Tim

Java 8 Time API:

Instant now = Instant.now(); //current date
Instant before = now.minus(Duration.ofDays(300));
Date dateBefore = Date.from(before);
12
GKislin

Java 8では、とても簡単になりました。

 LocalDate date = LocalDate.now().minusDays(300);

新しいAPIへのすばらしいガイドは ここ で見つけることができます。

10

ご覧のとおり、 HERE できることはたくさんあります。ここにあなたができることを示す例があります!

DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
Calendar cal = Calendar.getInstance();

//Add one day to current date.
cal.add(Calendar.DATE, 1);
System.out.println(dateFormat.format(cal.getTime()));

//Substract one day to current date.
cal = Calendar.getInstance();
cal.add(Calendar.DATE, -1);
System.out.println(dateFormat.format(cal.getTime()));

/* Can be Calendar.DATE or
*  Calendar.MONTH, Calendar.YEAR, Calendar.HOUR, Calendar.SECOND
*/
7
waldyr.ar

作業を簡単にするための関数を作成しました。

  • DateStringの後7日間はdateCalculate(dateString,"yyyy-MM-dd",7);

  • DateStringまでの7日間を取得するには:dateCalculate(dateString,"yyyy-MM-dd",-7);


public static String dateCalculate(String dateString, String dateFormat, int days) {
    Calendar cal = Calendar.getInstance();
    SimpleDateFormat s = new SimpleDateFormat(dateFormat);
    try {
        cal.setTime(s.parse(dateString));
    } catch (ParseException e) {
        e.printStackTrace();
    }
    cal.add(Calendar.DATE, days);
    return s.format(cal.getTime());
}
1
reflexgravity

あなたは簡単にSimpleDateFormatとカレンダーで減算することができます

 public static String subtractDate(String time,int subtractDay) throws ParseException {


        Calendar cal = Calendar.getInstance();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm", Locale.ENGLISH);
        cal.setTime(sdf.parse(time));
        cal.add(Calendar.DATE,-subtractDay);
        String wantedDate = sdf.format(cal.getTime());

        Log.d("tag",wantedDate);
        return wantedDate;

    }
0
Beyaz