現在の日付から1か月を短縮し、このコードを使用してJava.util.Date
変数imを痛めたいが、2行目にエラーが表示される
Java.util.Date da = new Date();
da.add(Calendar.MONTH, -1); //error
この日付をJava.util.Date
変数に格納する方法は?
カレンダーを使用:
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);
Date result = cal.getTime();
Java 8、8から開始する方法は、Calendar
ではなく Date-Time API を使用することです。
Date
オブジェクトを返したい場合:
Date date = Date.from(ZonedDateTime.now().minusMonths(1).toInstant());
Date
オブジェクトを正確に必要としない場合は、パッケージによって提供されるクラスを直接使用して、他のタイムゾーンの日付を取得することもできます。
ZonedDateTime dateInUTC = ZonedDateTime.now(ZoneId.of("Pacific/Auckland")).minusMonths(1);
Calendar calNow = Calendar.getInstance()
// adding -1 month
calNow.add(Calendar.MONTH, -1);
// fetching updated time
Date dateBeforeAMonth = calNow.getTime();
Calendar
を使用できます
Java.util.Date da = new Date();
Calendar cal = Calendar.getInstance();
cal.setTime(da);
cal.add(Calendar.MONTH, -1);
da = cal.getTime();
Java8およびJava9での新しいJava.timeパッケージの使用
import Java.time.LocalDate;
LocalDate mydate = LocalDate.now(); // Or whatever you want
mydate = mydate.minusMonths(1);
この方法を使用する利点は、月の長さを変更することに関する問題をすべて回避し、日付と範囲をより柔軟に調整できることです。 Local部分もTimezoneスマートなので、それらの間で簡単に変換できます。
余談ですが、Java.timeを使用すると、曜日、月の日、月の最後までのすべての日、特定の曜日までのすべての日なども取得できます。
mydate.plusMonths(1);
mydate.with(TemporalAdjusters.next(DayOfWeek.SUNDAY)).getDayOfMonth();
mydate.with(TemporalAdjusters.lastDayOfMonth());