私はその月の今日の日を取得しようとしています。
そして、私がやりたいのは、数値に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日ごとにメインアクティビティで非同期タスクを起動したいので、これを使用しています。
add(Calendar.DAY_OF_MONTH, 7);
From Calendar JavaDoc
カレンダーの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日です。
カレンダーのaddメソッドを使用する必要があります。
cal.add(Calendar.DAY_OF_MONTH, 7);
cal.add(Calendar.DAY_OF_MONTH、7);
LocalDate.now( ZoneId.of( "America/Montreal" ) ) // Today’s date.
.plusWeeks( 1 ) // Yields `LocalDate` object
.getDayOfMonth() // Yields `int` number
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 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に将来追加される可能性のある試験場です。 Interval
、 YearWeek
、 YearQuarter
などの便利なクラスがここにあります。 、および 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();
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);
GregorianCalendar.add(Calendar.DATE、7)を使用します。 GregorianCalendarクラスは、日付を翌月にロールバックします。
Date newDate = new Date(current timestamp in millis + 604800000L);//after 7 days