44

Javaで先月と​​その年を知るにはどうすればよいですか?

たとえば、今日が2012年10月10日の場合、結果はとにMonth = 9なりYear = 2012ます。今日が2013年1月10日の場合、結果はとにMonth = 12なりYear = 2012ます。

4

10 に答える 10

72

あなたの解決策はここにありますが、加算の代わりに減算を使用する必要があります

c.add(Calendar.MONTH, -1);

次に、でゲッターを呼び出して、Calendar適切なフィールドを取得できます

int month = c.get(Calendar.MONTH) + 1; // beware of month indexing from zero
int year  = c.get(Calendar.YEAR);
于 2012-10-10T07:55:26.237 に答える
27

java.time

java.timeJava 8 に組み込まれたフレームワークの使用:

import java.time.LocalDate;

LocalDate now = LocalDate.now(); // 2015-11-24
LocalDate earlier = now.minusMonths(1); // 2015-10-24

earlier.getMonth(); // java.time.Month = OCTOBER
earlier.getMonth.getValue(); // 10
earlier.getYear(); // 2015
于 2015-11-24T13:07:53.160 に答える
10

JodaTimeLibraryを使用します。日付、時刻、カレンダー、ロケールの処理は非常に簡単で、バージョン8ではJavaに統合されます。

DateTime#minusMonthsメソッドは、前月を取得するのに役立ちます。

DateTime month = new DateTime().minusMonths (1); 
于 2012-10-10T08:02:12.210 に答える
10

これを行うには、Calendarクラスを使用できます。

SimpleDateFormat format = new SimpleDateFormat("yyyy.MM.dd HH:mm");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.MONTH, -1);
System.out.println(format.format(cal.getTime()));

これは印刷します:2012.09.10 11:01実際の日付2012.10.10 11:01

于 2012-10-10T08:03:23.923 に答える
7

最も簡単でエラーが発生しにくいアプローチは... Calendar の roll() メソッドを使用します。このような:

    c.roll(Calendar.MONTH, false);

ロール メソッドはブール値を取ります。これは基本的に、月をロールアップ (true) またはダウン (false) することを意味しますか?

于 2012-10-10T08:00:00.290 に答える
2

月はゼロベースであることに注意する必要があるため、getMonthを実行するときは、1を追加する必要があります。以下の例では、0ではなく1としてJanuarayに1を追加する必要があります。

    Calendar c = Calendar.getInstance();
    c.set(2011, 2, 1);
    c.add(Calendar.MONTH, -1);
    int month = c.get(Calendar.MONTH) + 1;
    assertEquals(1, month);
于 2012-10-10T08:05:48.057 に答える