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

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

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

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

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メソッドの使用方法を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

無料でSEからWebエンジニアへ転職しませんか?



侍エンジニア塾では、完全未経験の方から現在SEだけどプログラミングはやっていないという経験者まで、幅広い方々の人生を好転させるプログラミング指導を行ってきました。SEの方とお話していくなかで、

  • システムエンジニアという職業だけどコードが書けない
  • 事務作業が多くスキルがないため将来が不安
  • スクールに通うと完全未経験者と同じスタートになるからレベルが合わない
という、すでに知識があるSEならではのお悩みがあることに気づきました。そんな方におすすめなのが、弊社の「転職コース 」です。

弊社では、マンツーマンでレッスンを行いますので、現在お持ちの知識レベルからカリキュラムを作成いたします。さらにこちらの転職コースは無料で受講を始められて転職成功でそのまま卒業できるというとてもお得なコースとなっています。

既に知識のあるSEといっても転職は年齢が若いほど受かりやすいため、まずは無料体験レッスンで今の現状や理想の働き方について一緒に考えていきましょう。

まずは無料体験レッスンを予約する

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部としてこれまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。

おすすめコンテンツ

あなたにぴったりなプログラミング学習プランを無料で診断!

プログラミング学習の効率を劇的に上げる学習メソッドを解説