【Java入門】Calendarの使い方(add)

Javaには日付の処理を行うCalendarクラスがあります。

「Calendarクラスのaddメソッドについて知りたい」
「Calendarクラスのaddメソッドの基本的な使い方について知りたい」
「月またぎの問題の解決法を知りたい」
「月初と月末の計算方法について知りたい」

今回は、そんな悩みを解決するために、Calendarクラスのaddメソッドの使い方を、わかりやすく解説します!

なお、Javaの記事については、こちらにまとめています。

目次

addとは

Calendarクラスのaddメソッドは、Calendarのオブジェクトが保持している日時に対して、指定した値を加算/減算などの演算をするときに使用します。

public void set(int field, int value)

field:指定されたフィールドにCalendarクラスの定数などをセットします。(YEAR、MONTH、DAY_OF_MONTH)

addの基本的な使い方

以下にCalendarクラスのaddメソッドの基本的な使い方を記述します。

public class Main {
    public static void main(String[] args) throws Exception {
        
        /* addの基本的な使い方 */
        Calendar cl = Calendar.getInstance();
        
        // 年を1加算する
        cl.add(Calendar.YEAR, 1);
        System.out.println(cl.getTime());
        
        // 月を1加算する
        cl.add(Calendar.MONTH, 1);
        System.out.println(cl.getTime());
        
        // 日を1加算する
        cl.add(Calendar.DAY_OF_MONTH, 1);
        System.out.println(cl.getTime());
        
        // 年を減算する
        cl.add(Calendar.YEAR, -5);
        System.out.println(cl.getTime());
        
    }
}
実行結果
Tue Mar 27 05:04:35 UTC 2018
Fri Apr 27 05:04:35 UTC 2018
Sat Apr 28 05:04:35 UTC 2018
Sun Apr 28 05:04:35 UTC 2013

サンプルではaddメソッドを使用して年、月、日の加算/減算などを行っています。
このようにaddメソッドを使用すれば、簡単に日時を変更することが可能です。

注意点として、CalendarクラスやDateクラスは、月またぎの問題があり、月を0から始めるため、例えば1月で設定したい場合は0を指定します。

月初と月末を取得する

ここでは、指定した年月日の月初と月末を取得する方法を説明します。

月初を取得する方法

月初を取得するには、CalendarクラスのgetActualMinimumメソッドを使用します。

以下に、月初を取得する方法を記述します。

public class Main {
    public static void main(String[] args) throws Exception {
                
        // 月初の計算
        Calendar cl = Calendar.getInstance();
        cl.set(2010,0,1);

        int firstday = cl.getActualMinimum(Calendar.DAY_OF_MONTH); 
        
        System.out.println("firstday : " + firstday);
        
    }
}
実行結果
firstday : 1

サンプルではCalendarオブジェクトにsetメソッドを使用して、取得したい月を引数で指定します。

次にgetActualMinimumメソッドを使用して、Calendarクラスの定数DAY_OF_MONTHを指定しています。

サンプルで使用しているsetメソッドについては、以下の記事で詳しく解説しています!

月末を取得する方法

月末を取得するには、CalendarクラスのgetActualMaximumメソッドを使用します。

以下に、月末を取得する方法を記述します。

public class Main {
    public static void main(String[] args) throws Exception {
                
        // 月末の計算
        Calendar cl = Calendar.getInstance();
        cl.set(2010,0,1);

        int lastday = cl.getActualMaximum(Calendar.DAY_OF_MONTH);  
        
        System.out.println("lastday : " + lastday);
        
    }
}
実行結果
lastday : 31

サンプルではCalendarオブジェクトにsetメソッドを使用して、取得したい月を引数で指定します。

次にgetActualMaximumメソッドを使用して、Calendarクラスの定数DAY_OF_MONTHを指定しています。

CalendarクラスのgetActualMaximumメソッドは、うるう年の2月なら29、うるう年でない場合は28を返します。

Calendarについてもっと詳しく知りたい方へ

Calendarのさまざまな使い方については、以下の記事にまとめていますので、ぜひ参考にしてくださいね!

まとめ

ここでは、Calendarクラスaddメソッドの基本的な使い方や注意点、月初と月末を取得する方法などを説明しました。

日付を扱う処理は、さまざまな場面で使用することがあると思います。

もし、Calendarクラスのgetメソッドの使用方法を忘れてしまったら、この記事を思い出してくださいね!

この記事を書いた人

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。侍テック編集部では技術系コンテンツを中心に有用な情報を発信していきます。

目次