web-dev-qa-db-ja.com

Javaで前月と年を取得する方法は?

Javaで先月と​​その年を調べる方法

例えば今日が2012年10月10日の場合、結果は月= 9および年= 2012である必要があります。今日が2013年1月10日の場合、結果は月= 12および年= 2012である必要があります

27
ashishjmeshram

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

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

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

int month = c.get(Calendar.MONTH) + 1; // beware of month indexing from zero
int year  = c.get(Calendar.YEAR);
57
Gaim

Java.time

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

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
15
Przemek

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

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

DateTime month = new DateTime().minusMonths (1); 
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

9
MaVRoSCy

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

    c.roll(Calendar.MONTH, false);

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

8
G Flores
private static String getPreviousMonthDate(Date date){
    final SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");

    Calendar cal = Calendar.getInstance();  
    cal.setTime(date);  
    cal.set(Calendar.DAY_OF_MONTH, 1);  
    cal.add(Calendar.DATE, -1);

    Date preMonthDate = cal.getTime();  
    return format.format(preMonthDate);
}


private static String getPreToPreMonthDate(Date date){
    final SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy");

    Calendar cal = Calendar.getInstance();  
    cal.setTime(date);  
    cal.add(Calendar.MONTH, -1);  
    cal.set(Calendar.DAY_OF_MONTH,1);  
    cal.add(Calendar.DATE, -1);  

    Date preToPreMonthDate = cal.getTime();  
    return format.format(preToPreMonthDate);
}
2
prasad kamble

月はゼロベースであるため、getMonthを実行する際に1を追加する必要があることに注意する必要があります。以下の例では、Januarayに0ではなく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);
2
RNJ