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

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

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

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

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メソッドの使用方法を忘れてしまったら、この記事を思い出してくださいね!

LINEで送る
Pocket

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

ヤマシタ

システムエンジニアとして10年勤務→フリーランスへ。現在は侍ブログ編集部としてこれまでに200記事以上の記事を執筆。
大規模システム開発からWebアプリ開発まで経験あり。最近ではPythonの機械学習に挑戦中。