web-dev-qa-db-ja.com

月の利用可能な日数を超えずに、現在の日付に7日を追加するにはどうすればよいですか?

私はその月の今日の日を取得しようとしています。

そして、私がやりたいのは、数値に7日を追加して、その月の現在の日を取得することです。

また、来月に行けるようにしたいと思います。今日は29日だとしましょう。 7日が追加された場合、29 + 7などの次の月に移動するにはどうすればよいですか?次の月の5日になります。

どうすればこれを行うことができますか?

私はすでに現在の日付を取得することができました。

Calendar cal = Calendar.getInstance();
    int day = cal.get(Calendar.DAY_OF_MONTH);
    int dayOfMonth = day;
    String today = getToday();

7日ごとにメインアクティビティで非同期タスクを起動したいので、これを使用しています。

13
user856377
add(Calendar.DAY_OF_MONTH, 7);

From Calendar JavaDoc

30
Guvante

カレンダーのaddメソッドはこれを行います:cal.add(Calendar.DATE, 7);

編集:拡張コメントを考えると、calが2011年10月4日から始まり、cal.add(Calendar.DATE, 7)を呼び出すと、calの新しい値は2011年10月11日になると言ってこれに追加する必要があると思います。 calは2025年3月29日から始まり、cal.add(Calendar.DATE, 7)の後のcalの新しい値は2025年4月5日です。

8
cobaltduck

カレンダーのaddメソッドを使用する必要があります。

cal.add(Calendar.DAY_OF_MONTH, 7);
7

cal.add(Calendar.DAY_OF_MONTH、7);

4
Mark B

tl; dr

LocalDate.now( ZoneId.of( "America/Montreal" ) )  // Today’s date.
         .plusWeeks( 1 )   // Yields `LocalDate` object
         .getDayOfMonth()  // Yields `int` number

Java.time

Java 8以降には、Java.timeフレームワークが付属しています。これらの新しいクラスは、古いJava.util.Date/.Calendarクラスに取って代わります。古いAndroidについては、以下で説明するThreeTen-BackportおよびThreeTenABPプロジェクトを参照してください。 。

これらのクラスには、時刻やタイムゾーンのない日付のみが必要な場合のLocalDateクラスが含まれています。ただし、現在の日付を決定するには、東の早い時期に新しい日が始まるため、タイムゾーンが重要であることに注意してください。

ZoneId zoneId = ZoneId.of( "America/Montreal" );
LocalDate today = LocalDate.now( zoneId );
LocalDate weekLater = today.plusWeeks( 1 ); // Automatically rolls over between months, no problem.

必要に応じて、そのLocalDateオブジェクトに問い合わせることができます その月の日数について

int dayOfMonth = weekLater.getDayOfMonth();

Java.timeについて

Java.time フレームワークはJava 8以降に組み込まれています。これらのクラスは、 Java.util.Dateなどの厄介な古い日時クラスに取って代わります。.Calendar 、& Java.text.SimpleDateFormat

Joda-Time プロジェクトは、現在 メンテナンスモード であり、Java.timeへの移行をアドバイスします。

詳細については、 Oracleチュートリアル を参照してください。そして、StackOverflowで多くの例と説明を検索してください。

Java.time機能の多くはJava 6&7 in ThreeTen-Backport にバックポートされ、さらに Android in-に適合されます) ThreeTenABP使用方法… を参照)。

ThreeTen-Extra プロジェクトは、Java.timeを追加のクラスで拡張します。このプロジェクトは、Java.timeに将来追加される可能性のある試験場です。 IntervalYearWeekYearQuarter などの便利なクラスがここにあります。 、および more


ジョーダタイム

更新:Joda-Timeプロジェクトは現在メンテナンスモードになっています。チームは、Java.timeクラスへの移行をアドバイスします。このセクションは履歴としてそのままにしておきます。

Android = Java 8テクノロジーなしで、プロジェクトに Joda-Time ライブラリを追加できます。ただし、Joda- Timeプロジェクトはメンテナンスモードであり、Java.timeクラスへの移行をアドバイスします(Androidについては上記のThreeTenABPを参照してください)。

Joda-Timeは、Java.timeにインスピレーションを与えました。この場合、必要なコードは非常に似ています。

DateTimeZone zone = DateTimeZone.forID( "America/Montreal" );
LocalDate today = LocalDate.now( zone );
LocalDate weekLater = today.plusWeeks( 1 ); // Automatically rolls over between months, no problem.
int dayOfMonth = weekLater.getDayOfMonth();
3
Basil Bourque
    Date m = new Date();
    Calendar cal = Calendar.getInstance();  
    cal.setTime(m);  
    cal.add(Calendar.DATE, 10); // 10 is the days you want to add or subtract   
    m = cal.getTime();   
    System.out.println(m);
2
umar

GregorianCalendar.add(Calendar.DATE、7)を使用します。 GregorianCalendarクラスは、日付を翌月にロールバックします。

2
Jay
Date newDate = new Date(current timestamp in millis + 604800000L);//after 7 days
0
Makvin