カテゴリ: Javaの例外処理 更新日: 2026/06/08

JavaのCalendarクラスの使い方をわかりやすく解説!日付や時刻の操作に便利な基本機能まとめ

370
Java のカレンダー機能(java.util.Calendar)の使い方

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

生徒

「Javaで日付や時間を操作したいんですが、昔からあるCalendarってまだ使えるんですか?」

先生

「はい、CalendarクラスはDateより柔軟に日付の操作ができるクラスとして長く使われてきました。ただし、今はjava.timeパッケージが主流になってきていますが、レガシーコードやライブラリとの互換性のためにCalendarは今もよく使われています。」

生徒

「どんなふうに使えるのか教えてください!」

先生

「それでは、JavaのCalendarクラスの基本から実際の使い方まで一緒に学んでいきましょう。」

1. Calendarクラスとは?

1. Calendarクラスとは?
1. Calendarクラスとは?

java.util.Calendarは、Javaで日付や時刻を扱うためのクラスです。Dateよりも柔軟で、年・月・日・時・分・秒などの個別の要素を操作できる点が特徴です。

現在はjava.time.LocalDateTimeZonedDateTimeなどの新しいAPIに置き換えられつつありますが、過去のシステムや古いライブラリでは今でも頻繁に使われています。

2. Calendarのインスタンスを作成する

2. Calendarのインスタンスを作成する
2. Calendarのインスタンスを作成する

Calendarは抽象クラスなので、直接インスタンス化するのではなく、getInstance()メソッドを使って取得します。


import java.util.Calendar;

public class CalendarInitExample {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar.getTime());
    }
}

Fri Sep 05 11:00:00 JST 2025

このようにして取得したCalendarインスタンスは、現在の日付と時刻を保持しています。

3. 年・月・日・時刻の各要素を取得する

3. 年・月・日・時刻の各要素を取得する
3. 年・月・日・時刻の各要素を取得する

Calendarでは、get(int field)メソッドを使って、年・月・日・時・分・秒などの情報を個別に取得できます。


Calendar calendar = Calendar.getInstance();

int year = calendar.get(Calendar.YEAR);
int month = calendar.get(Calendar.MONTH) + 1; // 月は0から始まるので+1
int day = calendar.get(Calendar.DAY_OF_MONTH);
int hour = calendar.get(Calendar.HOUR_OF_DAY);
int minute = calendar.get(Calendar.MINUTE);
int second = calendar.get(Calendar.SECOND);

System.out.println(year + "年" + month + "月" + day + "日 " + hour + "時" + minute + "分" + second + "秒");

2025年9月5日 11時0分0秒

月だけは0〜11で管理されているため、表示時は+1する必要がある点に注意しましょう。

Javaをこれから始める人や、 オブジェクト指向の考え方を基礎から理解したい人には、 定番の入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

4. 日付の加算・減算をする

4. 日付の加算・減算をする
4. 日付の加算・減算をする

Calendarでは、add()メソッドを使って、日付や時刻に加算や減算ができます。たとえば「3日後」や「1ヶ月前」なども簡単に扱えます。


Calendar calendar = Calendar.getInstance();

calendar.add(Calendar.DAY_OF_MONTH, 3); // 3日後
System.out.println("3日後: " + calendar.getTime());

calendar.add(Calendar.MONTH, -1); // 1ヶ月前
System.out.println("1ヶ月前: " + calendar.getTime());

3日後: Mon Sep 08 11:00:00 JST 2025
1ヶ月前: Thu Aug 08 11:00:00 JST 2025

このadd()メソッドを使えば、スケジュール機能や日付比較などに便利です。

5. Calendarで日付を設定する方法

5. Calendarで日付を設定する方法
5. Calendarで日付を設定する方法

set()メソッドを使うことで、特定の年月日時分秒を手動で設定できます。


Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, 2022);
calendar.set(Calendar.MONTH, Calendar.JUNE);
calendar.set(Calendar.DAY_OF_MONTH, 15);
calendar.set(Calendar.HOUR_OF_DAY, 10);
calendar.set(Calendar.MINUTE, 30);
calendar.set(Calendar.SECOND, 0);

System.out.println("設定した日時: " + calendar.getTime());

設定した日時: Wed Jun 15 10:30:00 JST 2022

MONTHは列挙定数(例:Calendar.JUNE)も使えますし、0〜11の数値でも指定できます。

6. Date型との相互変換

6. Date型との相互変換
6. Date型との相互変換

CalendarクラスはDateとの相互変換も簡単にできます。レガシーAPIとの連携やデータベース操作などで役立ちます。


import java.util.Date;

Calendar calendar = Calendar.getInstance();
Date date = calendar.getTime(); // Calendar → Date

calendar.setTime(new Date());   // Date → Calendar

これにより、SimpleDateFormatや古いライブラリと組み合わせて使うことができます。

7. Calendarの注意点と使いどころ

7. Calendarの注意点と使いどころ
7. Calendarの注意点と使いどころ

JavaのCalendarクラスは柔軟性は高いですが、タイムゾーンやスレッドセーフでない点に注意が必要です。複数スレッドで共有する場合は、毎回新しくインスタンスを生成するのが安全です。

また、2025年以降の開発ではjava.timeLocalDateZonedDateTimeなど)を使うことが推奨されています。ただし、既存コードや一部のフレームワークではCalendarの使用が前提となっていることがあるため、基本的な使い方を理解しておくことは重要です。

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

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

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

JavaのCalendarクラスとはどのような役割を持つクラスですか?初心者向けに教えてください。

Javaのjava.util.Calendarクラスは、プログラム内で日付や時刻を柔軟に操作するために用意された標準クラスです。従来のDateクラスよりも多機能で、年、月、日、時、分、秒といった個別の時間要素を細かく取得したり、特定の日付を加算・減算したりする計算処理に長けています。現在は新しいJava Time API(java.timeパッケージ)が推奨されていますが、古いシステム(レガシーコード)や既存のライブラリとの互換性を保つために、現在でもJavaプログラミングの現場で頻繁に利用されています。
Javaの例外処理の一覧へ
新着記事
Flutter
Flutterでのリポジトリパターンの実装例
Flutterでリポジトリパターンを実装する方法を完全解説!初心者向けアーキテクチャ設計入門
Java
Java の Objects クラスを使って null チェックを簡単にする方法
JavaのObjectsクラスの使い方を完全ガイド!nullチェックを簡単・安全に行う方法
Java
Java の UUID クラスを使って一意の識別子を作成する方法
JavaのUUIDクラスの使い方を完全ガイド!初心者でもわかる一意な識別子の作成方法
Java
Java の古い日付クラス(Date, Calendar)と新しい日付 API の違い
JavaのDateとCalendarと新しい日付APIの違いとは?初心者向け完全ガイド
人気記事
Java
Java の Random クラスを使ってランダムな数値を生成する方法
JavaのRandomクラスの使い方を完全ガイド!初心者でもわかる乱数生成
Java
Java の getter メソッドと setter メソッドの使い方
Javaのgetterメソッドとsetterメソッドの使い方を完全ガイド!初心者でもわかるアクセス方法
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
AWS
【AWS】VPCとは?初心者向けに仕組み・用途・できることをわかりやすく解説
【AWS】VPCとは?初心者向けに仕組み・用途・できることをわかりやすく解説

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク