【Java入門】Calendarの使い方(set)

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

「Calendarのsetメソッドについて知りたい」
「Calendarのsetメソッドの使い方を知りたい」
「setメソッドの応用的な使い方を知りたい」
「GregorianCalendarの使い方を知りたい」

今回は、そんな悩みを解決するために、Calendarクラスのsetメソッドの使い方を、わかりやすく解説します!

なお、Javaの記事については、こちらにまとめています。

setとは

Calendarクラスのsetメソッドは、カレンダーの時刻や日付などの要素を設定するときに使用します。

Calendarクラスで用意されている定数を指定して、年、月、日などの単位ごとや、年月日をまとめて取得することができます。

public void set(int field, int value)

field:指定されたフィールドにCalendarクラスの定数などをセットします。(YEAR、MONTH、DATE、HOUR、MINUTEなど)

setの基本的な使い方

以下にCalendarクラスのsetメソッドの基本的な使い方を記述します。

import java.util.Calendar;

public class Main {
    public static void main(String[] args) throws Exception {

        // 基本的な使い方 年を2017年に設定する
        Calendar cl = Calendar.getInstance();
        cl.set(Calendar.YEAR, 2017);
        System.out.println(cl.getTime());
    }
}
実行結果
Mon Mar 27 01:18:09 UTC 2017

サンプルではsetメソッドを使用して、第1引数のフィールドにCalendarクラスの定数YEARを指定して、第2引数の値に2017を指定しています。

実行結果からわかるように、2017年の現在時刻が出力されています。もし、過去の年を指定した場合、過去の年の現在の日付と時間が出力されます。

応用的な使い方

前述したとおりsetメソッドを使用すれば、年月日を取得することができます。
以下にsetメソッドを使用した、さまざまな年月日の取得方法を記述します。

import java.util.Calendar;

public class Main {
    public static void main(String[] args) throws Exception {

        Calendar cl = Calendar.getInstance();
        
        // Calendar.MONTH(月)指定
        cl.set(Calendar.MONTH, 2);
        System.out.println(cl.getTime());
        
        // Calendar.DATE(日)指定
        cl.set(Calendar.DATE, 12);
        System.out.println(cl.getTime());
        
        // Calendar.HOUR(時)指定
        cl.set(Calendar.HOUR, 12);
        System.out.println(cl.getTime());
        
        
        // 年月日を設定する
        cl.set(2017, 03, 25);
        System.out.println(cl.getTime());

        // 日時を年月日時分秒で設定
        cl.set(2017, 3, 25, 13, 30, 50);
        System.out.println(cl.getTime());
    }
}
実行結果
Mon Mar 27 01:31:53 UTC 2017
Sun Mar 12 01:31:53 UTC 2017
Sun Mar 12 12:31:53 UTC 2017
Tue Apr 25 12:31:53 UTC 2017
Tue Apr 25 13:30:50 UTC 2017

サンプルではsetメソッドを使用して、月、日、時、年月日、年月日時分秒でそれぞれ指定しています。
このようにsetメソッドを使用すれば、さまざまな日付の単位を指定することが可能です。

注意点として、月指定時に2月を指定しているにもかかわらず、実行結果ではMar(3月)が出力されています。
これは、CalendarクラスやDateクラスは月を0から始めるため、例えば1月で設定したい場合は、0を指定しなければいけません。

GregorianCalendarの使い方

GregorianCalendarクラスは、世界標準のグレゴリオ暦で日時を管理するクラスです。
通常はCalendarのgetInstanceメソッドを使用しますが、GregorianCalendarクラスでも同様に日付を取得することができます。

以下にGregorianCalendarクラスを使用した日付の取得方法を記述します。

import java.util.*;
 
public class Main {
    public static void main(String[] args) throws Exception {
 
        GregorianCalendar gc  = new GregorianCalendar(2017,3,1);
        Date date = gc.getTime();
        System.out.println(date);
    }
}
実行結果
Sat Apr 01 00:00:00 UTC 2017

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

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

まとめ

ここでは、Calendarクラスのsetメソッドの基本や応用的な使い方、GregorianCalendarクラスの使い方などを説明しました。

日付を扱う処理は、さまざまな場面で使用することがあると思います。

もし、Calendarクラスのsetメソッドの使用方法を忘れてしまったら、この記事を思い出してくださいね!

\業界最安級/
月額2,980円のプログラミングスクール

✔ 業界最安値の月定額2,980円
✔ 「Q&A掲示板」で平均30分以内に回答がもらえる
✔ 月に一度の「オンライン相談」で悩みを解決
✔ 教材の数は30種類以上
✔ 入会金不要+いつでも退会OK

公式サイトはこちら

Writer

侍テック編集部

株式会社SAMURAI

侍エンジニア塾は「人生を変えるプログラミング学習」をコンセンプトに、過去多くのフリーランスエンジニアを輩出したプログラミングスクールです。侍テック編集部では技術系コンテンツを中心に有用な情報を発信していきます。

あなたの目的に合わせた
SAMURAI ENGINEERの運営サービス

SAMURAI ENGINEER Pro

未経験でも挫折しないプログラミングスクール

詳細はこちら

SAMURAI TERAKOYA

日本最大級のサブスク型オンラインITスクール

詳細はこちら

SAMURAI ENGINEER Freelance

「一人で稼げる」スキルを身につける

詳細はこちら
Close