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