カテゴリ: Java 更新日: 2026/03/14

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

Calendarクラス
Calendarクラス

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

生徒

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

先生

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

生徒

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

先生

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

1. java.utilパッケージと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. 曜日の取得
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を使った実践的な活用例
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を取り出すことで今日の日付が得られます。

Javaで現在の時刻(時間と分)を取得する方法は?

Calendarクラスを使用すると、HOUR_OF_DAYやMINUTEフィールドから現在の時刻を簡単に取得できます。
カテゴリの一覧へ
新着記事
New1
Java
JavaのThreadクラスholdsLockメソッド完全ガイド!初心者でもわかる同期とロックの確認方法
新規投稿
New2
Spring
SpringDataJPAのJPAクエリメソッド「NotIn」の使い方を完全ガイド!初心者向け解説
更新記事
New3
Spring
SpringDataJPAのJPAクエリメソッド「In」の使い方を完全ガイド!初心者向け解説
更新記事
New4
Spring
SpringDataJPAのJPAクエリメソッド「Not」の使い方を完全ガイド!初心者向け解説
更新記事
人気記事
No.1
Java&Spring記事人気No1
Spring
Spring BootとVS Codeで開発を始めよう!拡張機能・launch.json・ホットリロードを丁寧に解説
No.2
Java&Spring記事人気No2
Spring
SpringのModelクラスとaddAttributeメソッドの使い方を完全ガイド!初心者でも安心
No.3
Java&Spring記事人気No3
Spring
Spring Data JPAのfindAllメソッドの使い方を完全ガイド!検索結果をThymeleafのth:eachで表示
No.4
Java&Spring記事人気No4
Java
JavaのExceptionクラスを完全解説!初心者でも理解できる例外処理の基本
No.5
Java&Spring記事人気No5
Spring
Spring BootとJavaの互換性一覧!3.5/3.4/3.3はJava 21・17に対応してる?
No.6
Java&Spring記事人気No6
Spring
Spring Data JPA入門!findAll()やfindBy**()の使い方などデータベース操作の基礎を学ぶ
No.7
Java&Spring記事人気No7
Servlet
JavaのHttpSessionを徹底解説!初心者でもわかるセッション管理の基本
No.8
Java&Spring記事人気No8
Java
JavaのIOExceptionクラス徹底解説!初心者向けファイル入出力エラー対策ガイド