バナー画像

Javaで日付処理を行う場合、Calenderクラスを利用するのが便利です。

本記事では、カレンダーを表示する処理をサンプルに、Calenderクラスの基本的な使い方についてご紹介していきます。

Javaでカレンダー表示


まずJavaでカレンダー表示するためのサンプルコードを掲載しておきます。

ポテパンダの一言メモ

Calendarクラスの説明用として掲載しているので、カレンダー機能として実際に利用するには不十分な箇所もあるかと思います。

サンプルコード

import java.util.Calendar;

public class Main {

	public static void main(String[] args) {
		int thisYear = Calendar.getInstance().get(Calendar.YEAR);
		for (int month = 1; month <=12; month++) {
		  System.out.println(thisYear + "年" + month + "月");
		  String[] weeks= {"Sun","Mon","Tue","Wed","Thu","Fri","Sat"};
			for(String s:weeks) {
				System.out.printf("%4s",s);
			}
			System.out.println();
		  new SampleCalendar(thisYear, month);
		}
	}
}

class SampleCalendar {
	private int year;
	private int month;
	private int firstDay;
	private int lastDay;
	
	SampleCalendar(int year, int month) {
		this.year = year;
		this.month = month;
		calc();
	}
	
	private void calc() {
		Calendar calendar = Calendar.getInstance();
		calendar.clear();
		calendar.set(year, month -1, 1);
		firstDay = calendar.get(Calendar.DAY_OF_WEEK);
		int day = 1 - (firstDay - 1) % 7;
		calendar.add(Calendar.MONTH, 1);
		calendar.add(Calendar.DATE, -1);
		lastDay = calendar.get(Calendar.DATE);
		
		while (day <= lastDay) {
            for (int ii = 0; ii < 7 && day <= lastDay; ii++) {
                System.out.printf(day < 1 ? "    " : "%4d", day);
                day++;
            }
            System.out.println();
        }
        System.out.println();
	}
}

表示内容

2021年1月
 Sun Mon Tue Wed Thu Fri Sat
                       1   2
   3   4   5   6   7   8   9
  10  11  12  13  14  15  16
  17  18  19  20  21  22  23
  24  25  26  27  28  29  30
  31

2021年2月
 Sun Mon Tue Wed Thu Fri Sat
       1   2   3   4   5   6
   7   8   9  10  11  12  13
  14  15  16  17  18  19  20
  21  22  23  24  25  26  27
  28

2021年3月
 Sun Mon Tue Wed Thu Fri Sat
       1   2   3   4   5   6
   7   8   9  10  11  12  13
  14  15  16  17  18  19  20
  21  22  23  24  25  26  27
  28  29  30  31

2021年4月
 Sun Mon Tue Wed Thu Fri Sat
                   1   2   3
   4   5   6   7   8   9  10
  11  12  13  14  15  16  17
  18  19  20  21  22  23  24
  25  26  27  28  29  30

2021年5月
 Sun Mon Tue Wed Thu Fri Sat
                           1
   2   3   4   5   6   7   8
   9  10  11  12  13  14  15
  16  17  18  19  20  21  22
  23  24  25  26  27  28  29
  30  31

2021年6月
 Sun Mon Tue Wed Thu Fri Sat
           1   2   3   4   5
   6   7   8   9  10  11  12
  13  14  15  16  17  18  19
  20  21  22  23  24  25  26
  27  28  29  30

2021年7月
 Sun Mon Tue Wed Thu Fri Sat
                   1   2   3
   4   5   6   7   8   9  10
  11  12  13  14  15  16  17
  18  19  20  21  22  23  24
  25  26  27  28  29  30  31

2021年8月
 Sun Mon Tue Wed Thu Fri Sat
   1   2   3   4   5   6   7
   8   9  10  11  12  13  14
  15  16  17  18  19  20  21
  22  23  24  25  26  27  28
  29  30  31

2021年9月
 Sun Mon Tue Wed Thu Fri Sat
               1   2   3   4
   5   6   7   8   9  10  11
  12  13  14  15  16  17  18
  19  20  21  22  23  24  25
  26  27  28  29  30

2021年10月
 Sun Mon Tue Wed Thu Fri Sat
                       1   2
   3   4   5   6   7   8   9
  10  11  12  13  14  15  16
  17  18  19  20  21  22  23
  24  25  26  27  28  29  30
  31

2021年11月
 Sun Mon Tue Wed Thu Fri Sat
       1   2   3   4   5   6
   7   8   9  10  11  12  13
  14  15  16  17  18  19  20
  21  22  23  24  25  26  27
  28  29  30

2021年12月
 Sun Mon Tue Wed Thu Fri Sat
               1   2   3   4
   5   6   7   8   9  10  11
  12  13  14  15  16  17  18
  19  20  21  22  23  24  25
  26  27  28  29  30  31

Java Calendarクラスの処理を確認しよう


カレンダーのサンプルをCalendarクラスを利用して作成したので、実際にサンプルコードで使われているCalendarクラスのメソッドについて確認していきましょう。

getInstanceメソッド

まずMainメソッドの6行目で利用しているgetInstanceメソッドですが、オブジェクトを作成する役割を担います。

クラスからインスタンスを作成するためのnew演算子に相当する処理です。

Calendarクラスを利用する際の基本となる呼び出し処理です。

clearメソッド

clearメソッドは、オブジェクトのフィールド値を初期化するためのメソッドです。

サンプルの33行目で記述しているように、引数なしで実行した場合は全フィールドが初期化されます。

インスタンス名.clear();
インスタンス名.clear(int フィールド名);

getメソッド

getメソッドは、オブジェクトから日時の情報を取得するためのメソッドです。

インスタンス名.get(int フィールド名);

サンプルでは「Calendar.YEAR」といったCalenderクラスのフィールド名が利用されています。

これらはstatic int型で定義されており、取得したいフィールド名を指定することで、オブジェクトに保存された値を取得出来ます。

頻繁に利用されるフィールド名は下記です。

カレンダーフィールド
  • YEAR: 年
  • MONTH: 月
  • DATE: 日
  • AM_PM: AMまたはPM
  • HOUR: 午前または午後の時間
  • MINUTE: 分
  • SECOND: 秒
  • DAY_OF_WEEK: 曜日

setメソッド

カレンダークラスのオブジェクトに対して、日時を設定するためのメソッドです。

サンプルコードの34行目では引数に「年月日」を指定していますが、フィールド名を指定して値を設定したり、日時または分秒まで指定して設定することも可能です。

インスタンス名.set(int フィールド名, int 値);
インスタンス名.set(int 年, int 月, int 日);
インスタンス名.set(int 年, int 月, int 日, int 時, int 分);
インスタンス名.set(int 年, int 月, int 日, int 時, int 分, int 秒);
ポテパンダの一言メモ

Calendarクラスのsetメソッドはオーバーロードされているため、引数の指定方法により設定する値が異なります。

addメソッド

addメソッドは、オブジェクトのフィールド値を加算・減算するためのメソッドです。

サンプルコードの37・38行目のように、第1引数にフィールド名、第2引数に加算・減算したい値を指定します。

インスタンス名.add(int フィールド名, int 値);

減算指定したい場合は、第2引数の値をマイナスにします。

さいごに: JavaのCalendarクラスで日付操作に挑戦しよう


本記事では、JavaのCalendarクラスの使い方について、その名の通りカレンダーを表示するサンプルを掲載しながらご紹介してきました。

日付操作を行うためのクラスはいくつか存在しますが、Calendarクラスも良く利用される処理方法です。

最初は少し違和感を感じる操作部分もあるかも知れませんが、使い方自体はシンプルですので、実際に利用しながら理解を深めてください。

エンジニアになりたい人に選ばれるプログラミングスクール「ポテパンキャンプ 」

ポテパンキャンプは卒業生の多くがWebエンジニアとして活躍している実践型プログラミングスクールです。 1000名以上が受講しており、その多くが上場企業、ベンチャー企業のWebエンジニアとして活躍しています。

基礎的な学習だけで満足せず、実際にプログラミングを覚えて実践で使えるレベルまで学習したいという方に人気です。 プログラミングを学習し実践で使うには様々な要素が必要です。

それがマルっと詰まっているポテパンキャンプでプログラミングを学習してみませんか?

卒業生の多くがWebエンジニアとして活躍

卒業生の多くがWeb企業で活躍しております。
実践的なカリキュラムをこなしているからこそ現場でも戦力となっております。
活躍する卒業生のインタビューもございますので是非御覧ください。

経験豊富なエンジニア陣が直接指導

実践的なカリキュラムと経験豊富なエンジニアが直接指導にあたります。
有名企業のエンジニアも多数在籍し品質高いWebアプリケーションを作れるようサポートします。

満足度高くコスパの高いプログラミングスクール「ポテパンキャンプ」

運営する株式会社ポテパンは10,000人以上のエンジニアのキャリアサポートを行ってきております。
そのノウハウを活かして実践的なカリキュラムを随時アップデートしております。

代表の宮崎もプログラミングを覚えサイトを作りポテパンを創業しました。
本気でプログラミングを身につけたいという方にコスパ良く受講していただきたいと思っておりますので、気になる方はぜひスクール詳細をのぞいてくださいませ。