現在日時を始めとした日付情報の取得は、プログラミングを行なっていく上で必ず利用する頻出処理の1つです。
各プログラミング言語に日付情報を取得するための機能は用意されており、JavaにおいてはCalendarクラスを利用することが可能です。
本記事では、初心者の方向けにJavaで提供されているCalendarクラスの概要から基本的な使い方について、サンプルコードをまじえてご紹介していきたいと思います。
Java Calendarクラスで何が出来るのか?
JavaにはCalendarクラスという日付の処理を行うクラスが提供されています。
従来はDateクラスで日付関連の処理を行うことが一般的でしたが、より便利に使いやすくしたものがCalendarクラスとして提供されています。
Calendarクラスでは日付の取得・計算・比較などが可能
JavaのCalendarクラスでは、値を保持しておくためのフィールド値として年月日はもちろん、時間を表す値も提供されています。
現在日時の取得はもちろん様々な計算処理や比較を行えるメソッドも提供されており、基本的な日付関連の処理はCalendarクラスのみでカバーすることが可能となっています。
Java Calendarクラスの基本的な使い方
ここからは実際にサンプルコードをまじえてJava Calendarクラスの基本的な使い方をご紹介していきたいと思います。
まずはCalendarクラスのインスタンスを取得する
JavaのCalendarクラスでは一般的なクラスで用いられるような「new演算子」ではなく、「getInstanceメソッド」を利用することでインスタンスを取得します。
Calendar calendar = Calender.getInstance();
getメソッドを利用して日付情報を取得する
Calendarクラスのインスタンスを取得した後は、様々なメソッドを利用して日付関連の実装が可能です。
中でも特に頻繁に利用することになるのが日付情報を取得する「getメソッド」でしょう。
まずgetメソッドの基本構文をご紹介します。
Calendarクラスのインスタンス.get(int field);
getメソッドの引数として設定する「int field」には下記のような定数が提供されています。
全ての定数はインスタンスが保持している情報から該当のフィールド情報を取得します。
- Calendar.YEAR(「年」の情報を取得)
- Calendar.MONTH(「月」の情報を取得)
- Calendar.DATE(「日」の情報を取得)
- Calendar.HOUR(午前または午後の「時間」の情報を取得)
- Calendar.MINUTE(「分」の情報を取得)
- Calendar.SECOND(「秒」の情報を取得)
- Calendar.SECOND(「秒」の情報を取得)
上記は日付を取得する際に頻繁に利用される定数ですが、これ以外にも様々な定数が提供されています。
必要な場合は、Java公式のCalendarクラスの情報を参照するようにしましょう。
実際にCalendarクラスのgetメソッドを利用したサンプルは下記のようになります。
import java.util.*; public class Main { public static void main(String[] args) throws Exception { Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1; int date = calendar.get(Calendar.DATE); System.out.println("現在日付は" + year + "年" + month + "月" + date + "日" ); } }
サンプルコードを実行するとCalendarクラスのインスタンスが作成された年月日が表示される仕組みとなっています。
現在日付は2019年9月29日
Calendar.MONTHは0から11までで表記されるため、1月〜12月で換算する場合にはサンプルのように「1」月分加算する必要があります。
addメソッドを利用して日時情報を計算する
getメソッドの次に利用する機会が多いメソッドとしては「addメソッド」と言えるのではないでしょうか。
サンプルコードを用いて簡単に使い方をご紹介していきたいと思います。
import java.util.*; public class Main { public static void main(String[] args) throws Exception { Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH) + 1; int date = calendar.get(Calendar.DATE); System.out.println("現在日付は" + year + "年" + month + "月" + date + "日" ); // インスタンスに10日を加算 calendar.add(Calendar.DAY_OF_MONTH, 10); int addYear = calendar.get(Calendar.YEAR); int addMonth = calendar.get(Calendar.MONTH) + 1; int addDate = calendar.get(Calendar.DATE); System.out.println("現在日付から10日後は" + addYear + "年" + addMonth + "月" + addDate + "日" ); } }
getメソッドのサンプルコードを基本に下記の1行を追加しています。
calendar.add(Calendar.DAY_OF_MONTH, 10) + 1;
こちらのコードは現在日付に第二引数で指定した「10」日を足した日付、つまり10日後の日付を求めるという内容を意味します。
ここで注意して頂きたいのは、addメソッドはあくまでインスタンスの「フィールド値」を変更する処理であるため、画面上などに変更したい値を表示する場合にはgetメソッドを利用する必要があるということです。
サンプルコードを実行した結果は下記となります。
現在日付は2019年9月29日 現在日付から10日後は2019年10月9日
さいごに
本記事では、日付情報を取得するために利用出来るJavaのCalendarクラスについてご紹介してきました。
システムを開発する上で、日付関連の処理は頻繁に利用されるため、ぜひ抑えておきたい知識の1つです。
今回ご紹介した内容は基本的な部分のみとなりますが、応用していくことで様々な日付関連の処理が実現可能となります。
ぜひご自身の携わる開発でCalendarクラスをうまく使いこなしてみてください。