Javaで日付を扱うのによく使用されるのがDate型、Calendar型、GregorianCalendar型がよく使用されます。
GregorianCalendarとは
GregorianCalendarは日付を格納するクラスの一種です。Calendar型の機能を全て網羅しており「グレゴリオ暦」と呼ばれる世界標準の日時を格納することができます。
よく使用されるのがCalendarクラスのgetInstance()メソッドを使用しますが、GregorianCalendarクラスでも同様に日付を取得することができます。
GregorianCalendarの使い方
Date型への変換やString型への変換など紹介します。
GregorianCalendarで日付の取得
GregorianCalendarクラスを使用して日付の取得を行います。
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
GregorianCalendar gc = new GregorianCalendar(2023,4,1);
Date date = gc.getTime();
System.out.println(date);
}
}
実行結果:
Mon May 01 00:00:00 JST 2023
GregorianCalendarのコンストラクタに「2023, 4, 1」を指定してますが、実行結果を見ると
「2023, 5, 1」となっていることがわかると思います。月の指定は「マイナス1ヶ月」を指定しましょう。
Date型をGregorianCalendar型に変換
使用頻度の高いDate型をGregorianCalendar型に変換する方法を紹介します。
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
// 現在日付の取得
Date date = new Date();
// 2023年5月1日
GregorianCalendar gc = new GregorianCalendar(2023,4,1);
// 現在日付で上書き
gc.setTime(date);
System.out.println(
gc.get(Calendar.YEAR) + "年" +
gc.get(Calendar.MONTH) + "月" +
gc.get(Calendar.DATE) + "日"
);
}
}
実行結果:
2023年1月22日
GregorianCalendarにセットした日付情報を取得する際はget()メソッドを使用することで取得できます。
GregorianCalendar型をString型に変換
DateクラスやCalendarクラスはどうしても一筋縄ではいかないこともよくあり、String型に変換したいという場合がよくあります。
今回はGregorianCalendar型をString型に変換するコードを紹介します。
import java.util.*;
import java.text.SimpleDateFormat;
public class Main {
public static void main(String[] args) throws Exception {
// 現在日付の取得
GregorianCalendar gc = new GregorianCalendar();
// 変換するフォーマットを設定
SimpleDateFormat sf = new SimpleDateFormat("yyyy/MM/dd");
System.out.println(sf.format(gc.getTime()));
}
}
実行結果:
2023/02/22
まとめ
日付の扱いは使用頻度は高いですが、どうしても忘れがちになってしまいます。はじめは覚え書きで少しづつなれていくと理解が深まると思います。Date型やString型への変換方法も一緒に覚えておくといいですね。