カテゴリ: Java 更新日: 2025/12/12

JavaのCalendarクラスの使い方を完全ガイド!初心者でもわかる日付と時刻操作

Calendarクラス
Calendarクラス

先生と生徒の会話形式で理解しよう

生徒

「先生、Javaで今日の日付や時刻を取得したいときってどうすればいいんですか?」

先生

「そのときはjava.utilパッケージにあるCalendarクラスを使うと便利ですよ。」

生徒

「Calendarクラスってどんなことができるんですか?」

先生

「日付や時刻の取得、加算や減算、曜日の判定など幅広く使えます。実際に使い方を一緒に見てみましょう。」

1. java.utilパッケージとCalendarクラスとは

1. java.utilパッケージとCalendarクラスとは
1. java.utilパッケージとCalendarクラスとは

Javaのjava.utilパッケージには、コレクションやユーティリティ関連の便利なクラスが数多く含まれています。その中のCalendarクラスは、日付と時刻を扱うために提供されている抽象クラスです。内部的にはミリ秒単位で保持しており、年や月、日付、曜日などを自由に操作できます。

2. Calendarクラスの基本的な使い方

2. Calendarクラスの基本的な使い方
2. Calendarクラスの基本的な使い方

Calendarクラスはnewで直接生成するのではなく、getInstanceメソッドを通じて現在のロケールやタイムゾーンに合わせたインスタンスを取得します。以下の例は現在の日付と時刻を出力する方法です。


import java.util.Calendar;

public class CalendarExample {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance();
        int year = cal.get(Calendar.YEAR);
        int month = cal.get(Calendar.MONTH) + 1;
        int day = cal.get(Calendar.DAY_OF_MONTH);
        int hour = cal.get(Calendar.HOUR_OF_DAY);
        int minute = cal.get(Calendar.MINUTE);

        System.out.println("今日の日付: " + year + "年" + month + "月" + day + "日");
        System.out.println("現在の時刻: " + hour + "時" + minute + "分");
    }
}

今日の日付: 2025年9月23日
現在の時刻: 14時30分

3. 日付や時刻の加算と減算

3. 日付や時刻の加算と減算
3. 日付や時刻の加算と減算

Calendarクラスは、addメソッドを使って日付や時刻を簡単に加算や減算できます。例えば、1週間後や1か月前の日付を求めたい場合に活用できます。


Calendar cal = Calendar.getInstance();
cal.add(Calendar.DAY_OF_MONTH, 7);
System.out.println("1週間後の日付: " + cal.get(Calendar.YEAR) + "年" +
    (cal.get(Calendar.MONTH) + 1) + "月" + cal.get(Calendar.DAY_OF_MONTH) + "日");

4. 曜日の取得

4. 曜日の取得
4. 曜日の取得

曜日を知りたいときはCalendar.DAY_OF_WEEKを使います。返される値は数値なので、日本語の曜日に変換する工夫が必要です。


String[] weeks = {"日", "月", "火", "水", "木", "金", "土"};
Calendar cal = Calendar.getInstance();
int weekIndex = cal.get(Calendar.DAY_OF_WEEK) - 1;
System.out.println("今日は" + weeks[weekIndex] + "曜日です。");

5. CalendarとDateの違い

5. CalendarとDateの違い
5. CalendarとDateの違い

JavaにはDateクラスもありますが、Calendarはより柔軟な操作が可能です。Dateは単純に日付や時刻を保持するだけに対して、Calendarは加算や減算、特定のフィールドの操作に適しています。

6. Calendarとタイムゾーン

6. Calendarとタイムゾーン
6. Calendarとタイムゾーン

Calendarはタイムゾーンを意識して動作します。TimeZoneクラスと組み合わせることで、世界中の異なる地域の時刻を取得できます。


import java.util.Calendar;
import java.util.TimeZone;

public class TimeZoneExample {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("Asia/Tokyo"));
        System.out.println("東京の現在時刻: " + cal.get(Calendar.HOUR_OF_DAY) + "時");

        Calendar ny = Calendar.getInstance(TimeZone.getTimeZone("America/New_York"));
        System.out.println("ニューヨークの現在時刻: " + ny.get(Calendar.HOUR_OF_DAY) + "時");
    }
}

7. Calendarを使った実践的な活用例

7. Calendarを使った実践的な活用例
7. Calendarを使った実践的な活用例

実際のアプリケーション開発では、予約システムやログの記録、日付計算などでCalendarが活躍します。例えば、ホテルのチェックイン日からチェックアウト日までの日数を計算する、イベントの開始日時を設定するなど幅広い用途があります。さらに、SimpleDateFormatと組み合わせることで見やすい文字列として日付を整形することもできます。

まとめ

まとめ
まとめ

この記事では、JavaのCalendarクラスを中心に、日付や時刻の取得方法、加算・減算、曜日の取得、タイムゾーンの扱い、さらにはDateクラスとの違いなど幅広く学びました。特に、初心者の方にとって「現在の日付を取得する」「指定した日付を計算する」「世界中の時刻を扱う」といった基本的な処理は、プログラム開発の中で頻繁に登場する重要なスキルです。Calendarは抽象クラスでありながら柔軟な操作ができ、予約管理システム、ログ記録、日付フォーマット変換、スケジューラ処理など多くの実用的な場面で役に立ちます。また、タイムゾーンを設定することでグローバル対応したアプリケーションにも応用でき、ビジネス用途でも利用価値が高いクラスです。

一方で、Calendarクラスは内部が少し複雑で、フィールドごとに設定する必要がある点や、月が0始まりである点など注意点もあります。しかし、こうした仕様を理解すれば、日付操作の柔軟性や拡張性が大幅に向上します。特に、Javaの標準ライブラリに含まれているため環境を選ばず使用でき、外部依存を増やさずに日付処理を完結できる利点があります。加えて、タイムゾーンを指定することで国際的なシステムにも対応でき、ビジネスの現場で求められる要件にも応えられます。

また、Calendarクラスを学ぶことは、後に登場するLocalDateZonedDateTimeなどの新しい日付APIを理解する基礎にもなります。将来的にJavaの時刻処理を深く扱う際にも役立つ知識となりますので、今回学んだ基礎を確実に身につけておきましょう。

サンプル:翌週の曜日と時刻を表示する応用例


import java.util.Calendar;
import java.util.TimeZone;

public class NextWeekSchedule {
    public static void main(String[] args) {
        Calendar cal = Calendar.getInstance(TimeZone.getTimeZone("Asia/Tokyo"));

        String[] weeks = {"日", "月", "火", "水", "木", "金", "土"};

        cal.add(Calendar.DAY_OF_MONTH, 7);

        int y = cal.get(Calendar.YEAR);
        int m = cal.get(Calendar.MONTH) + 1;
        int d = cal.get(Calendar.DAY_OF_MONTH);
        int w = cal.get(Calendar.DAY_OF_WEEK) - 1;
        int h = cal.get(Calendar.HOUR_OF_DAY);

        System.out.println("1週間後: " + y + "年" + m + "月" + d + "日 (" + weeks[w] + "曜日) " + h + "時");
    }
}

この例では、現在の日付から1週間後の日付と曜日を取得し、そのまま表示しています。タイムゾーンを指定することで、地域ごとの時刻差を考慮した結果を得られることが分かります。こうした処理はイベント管理や予約システム、通知サービスなどでも活用できます。

先生と生徒の振り返り会話

生徒

「今日学んだことで、Calendarクラスはただ日付を取るだけじゃなくて、加算や減算、曜日判定、タイムゾーンまで対応できるって分かりました!」

先生

「その通りです。プログラムの中で日付と時刻を扱う場面はとても多いので、しっかり覚えておくと実務でも役立ちますよ。」

生徒

「月の値が0から始まる点とか、addメソッドの挙動とか、細かい注意点も理解できました。これを踏まえて他の時刻APIも学んでみます!」

先生

「良い姿勢ですね。日付処理はシステムの根幹に関わる部分なので、正確に理解しておくことで、より信頼性の高いアプリケーションが作れるようになります。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Javaで今日の日付を取得するにはどうすればいいですか?

Javaでは、Calendarクラスを使用して現在の日付を取得することができます。Calendar.getInstance()でインスタンスを作成し、YEAR、MONTH、DAY_OF_MONTHを取り出すことで今日の日付が得られます。
カテゴリの一覧へ
新着記事
Springの@Transactional徹底解説!トランザクションの伝播・分離レベル・タイムアウトの基本
JavaのHashMapクラスgetメソッドの使い方を完全ガイド!初心者でもわかるjava.util入門
Thymeleafのth:fragmentを使ったテンプレートの再利用方法を完全ガイド!初心者でもわかる使い方
Javaの@PathVariableアノテーションの使い方を徹底解説!初心者でもわかるパスパラメータの基本と応用
人気記事
No.1
Java&Spring記事人気No1
Javaのラムダ式で配列を扱う!Arrays.streamの基本と注意点を初心者向けに解説
No.2
Java&Spring記事人気No2
JavaのRuntimeExceptionを完全解説!初心者でもわかるjava.langパッケージの基礎
No.3
Java&Spring記事人気No3
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.4
Java&Spring記事人気No4
JavaのIntegerクラスの使い方を完全ガイド!初心者でもわかる整数操作
No.5
Java&Spring記事人気No5
JavaのBigDecimalクラスcompareToメソッド完全ガイド!初心者でもわかる大小比較の基本
No.6
Java&Spring記事人気No6
Springの@Serviceアノテーションの使い方を徹底解説!初心者でもわかるSpring フレームワーク入門
No.7
Java&Spring記事人気No7
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.8
Java&Spring記事人気No8
Javaの@SuppressWarningsアノテーションの使い方を完全ガイド!初心者でもわかる警告の抑制方法