【Java入門】Calendarクラスの使い方を完全解説(set/add/format)

こんにちは!フリーランスの桃太郎です。

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

この記事では、基本的な、

・Calendarクラスとは
・Calendarクラスの使い方

という基本的な内容から、

・setメソッドで日付を設定する方法
・addメソッドで日付の計算をする
・Date⇔Calendarの変換方法

などの応用的な使い方に関しても解説していきます。

Calendarクラスについて正しく理解し、必要な場面で使いこなすことができるように、わかりやすく解説します!

JavaのCalendar基本編

Calendarクラスとは

Calendarクラスとは、特定の日付や指定した年・月・日・時などの操作を行うためのクラスです。

日付というキーワードからよく比較対象としてあげられるDateクラスとの違いについては以下の記事を参考にしてみると良いでしょう。

【Java入門】DateとCalendarの使い方・変換方法まとめ
更新日 : 2019年6月17日

getinstanceでオブジェクト生成

Calendarクラスは演算子newではなく、 getInstanceメソッドを呼ぶことにより、オブジェクトを生成します。

getInstanceメソッドは、呼び出すごとに現在の日付と時間に初期化された状態で、オブジェクトを返します。

Calendarクラスは、日付の演算や取得、日付同士の比較など、日付操作で必要なさまざまなメソッドが用意されています。

使用するにはimport java.util.Calendarを指定します。

使い方

以下に、Calendarクラスの基本的な使い方を記述します。

実行結果

サンプルでは、Calendarクラスのオブジェクトを生成し、getメソッドで現在の年月日をそれぞれ取得しています。

注意点として、CalendarクラスやDateクラスは月またぎの問題があり、0が1月となります。そのため、現在は2017年3月ですが、月が2と出力されてしまいます。

紛らわしさを回避する方法としては、以下のように記述すれば、月が3で出力されます。

実行結果

Calendarの基本メソッドの使い方

ここからはCalendarクラスでよく利用されるメソッドについて紹介していきます。

setメソッドで日付を設定する方法

まずはCalendarクラスのsetメソッドの基本的な使い方を解説します。

setメソッドは日時を設定するために使用し、日付を処理するプログラムにおいて頻繁に使用されるメソッドの一つです。

setメソッドの使い方のサンプルは以下の通りです。

実行結果

setメソッドの機能で1点気をつけることがあります。

上記のサンプルをよく見ていただくと、現在日付から年、月、日と個別に設定している箇所では、指定した要素(年や月や日)以外は前の値を保ったままになっています。

このことは日付の加算減算処理などで想定した日付と違う不具合に遭遇した際に、解決のヒントになることがよくありますので初心者の方は覚えておいて下さい。

setメソッドの使い方は、以下の記事で詳しく解説しています!

【Java入門】Calendarの使い方(set)
更新日 : 2019年1月23日

addメソッドで日付の計算をする

Calendarクラスで、日付の加算減算などを行いたい場合は、addメソッドを使用します。

addメソッドの使い方は、以下の記事で詳しく解説しています!

【Java入門】Calendarの使い方(add)
更新日 : 2017年6月11日

formatメソッドで日付の形式を指定

Calendarクラスは、文字列で日付のフォーマットを設定することが可能です。

日付のフォーマットの設定方法は、以下の記事で詳しく解説しています!

【Java入門】Calendarの日付フォーマットを指定する(format)
更新日 : 2019年7月29日

日付が正しいか確認する方法

設定した日付が正しい日付か判断する場合は、CalendarクラスのsetLenientメソッドを使用します。

通常Calendarクラスは日付の整合性チェックを行わないため、存在しない日付を指定して、演算処理などを行った場合、日付の範囲が不正であることによる例外が発生してしまいます。

そのため、演算処理などの前に日付の整合性をチェックするためのメソッドとしてsetLenientメソッドを使用します。

以下にsetLenientメソッドを使用した日付チェック処理を記述します。

実行結果

サンプルでは、CalendarクラスのオブジェクトにsetLenientメソッドで引数に、falseを指定しています。

falseを指定することで、日付の妥当性のチェックが行われ、存在しない日付2017/3/40を指定するとgetTimeメソッドで日付取得時に、例外が投げられます。

Date⇔Calendarの変換方法

CalendarからDateに変換

ここでは、CalendarからDateに変換する方法を解説します。

Calendar型からDate型へ変換する場合は、Calendar型の変数に対して、getTimeメソッドで現在時刻を取得し、Date型の変数に設定すれば変換できます。

次のプログラムで確認してみましょう。

実行結果:

DateからCalendarに変換

ここでは、DateからCalendarに変換する方法を解説します。

Date型からCalendar型へ変換する場合は、日時を設定するsetTimeメソッドを使用します。

setTimeの引数にDate型の変数を指定すれば、Calendar型へ変換することができます。

次のプログラムで確認してみましょう。

実行結果:

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

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

【Java入門】Calendarクラスの使い方総まとめ
更新日 : 2018年11月27日

まとめ

ここではCalendarクラスの基本的な使い方や、setメソッドにて日付を設定する方法、フォーマットを指定する方法などの実践的な使い方について紹介しました。

Calendarクラスでは特にsetメソッドで日付を設定する方法はよく使われるので初心者の方はなんども繰り返し読んで覚えて下さいね。

日付を扱う場面は数多く存在し、しかもその扱い方に悩まされることが多々あると思います。

そのような時はぜひこの記事をブックマークしていただき、日付の実装について悩んだ時はこの記事を思い出してくださいね!

LINEで送る
Pocket

最短でエンジニアを目指すなら侍エンジニア塾

cta_under_bnr

侍エンジニア塾は業界で初めてマンツーマンレッスンを始めたプログラミングスクールです。これまでの指導実績は16,000名を超え、未経験から数多くのエンジニアを輩出しています。

あなたの目的に合わせてカリキュラムを作成し、現役エンジニア講師が専属であなたの学習をサポートするため効率よく学習を進めることができますよ。

無理な勧誘などは一切ありません。まずは無料体験レッスンを受講ください。

無料体験レッスンの詳細はこちら

書いた人

湯浅 桃太郎

湯浅 桃太郎

20代は役者、30代はエンジニア、そして40代を迎えた現在、Webライターとして活動しながら、3人の息子たちの家庭教育、アンチエイジングなどにも力を入れて日々ノマドライフを楽しんでいます。

おすすめコンテンツ

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

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