はじめに
JavaのDateTimeFormatterについてまとめてみた。
Javaには日付や時刻を扱うためのクラス「DateTimeFormatter」が存在している。
このクラスを使用し、日付や時刻を表現するには3つの方法がある。
・DateTimeFormatterクラス内の定数を使用する
・パターン文字を使用する
・FormatStyleを使用する
事前に定義された定数を使用する
DateTimeFormatterクラスにあるstatic定数を使って日付・時刻を表現する。
LocalDateTime dateTime = LocalDateTime.of(2023, 12, 17, 12, 10, 50);
DateTimeFormatter basicIsoDate = DateTimeFormatter.BASIC_ISO_DATE;
System.out.println(basicIsoDate.format(dateTime));
// 実行結果
// 20231217
DateTimeFormatter isoLocalDate = DateTimeFormatter.ISO_LOCAL_DATE;
System.out.println(isoLocalDate.format(dateTime));
// 実行結果
// 2023-12-17
DateTimeFormatter isoLocalTime = DateTimeFormatter.ISO_LOCAL_TIME;
System.out.println(isoLocalTime.format(dateTime));
// 実行結果
// 12:10:50
パターン文字を使用する
大文字と小文字のアルファベットを使用して日付・時刻を表現する。
LocalDateTime dateTime = LocalDateTime.of(2023, 12, 17, 12, 10, 50);
DateTimeFormatter dateTimeFormat = DateTimeFormatter.ofPattern("yyyy年MM月dd日HH時mm分ss秒");
System.out.println(dateTimeFormat.format(dateTime));
// 実行結果
// 2023年12月17日12時10分50秒
FormatStyleを使用する
列挙型FormatStyleを使用して日付・時刻を表現する。
LocalDateTime dateTime = LocalDateTime.of(2023, 12, 17, 12, 10, 50);
// ロケールが日本
DateTimeFormatter formatFull = DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL).withLocale(Locale.JAPAN);
System.out.println(formatFull.format(dateTime));
// 実行結果
// 2023年12月17日日曜日
DateTimeFormatter formatLong = DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG).withLocale(Locale.JAPAN);
System.out.println(formatLong.format(dateTime));
// 実行結果
// 2023年12月17日
DateTimeFormatter formatMedium = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).withLocale(Locale.JAPAN);
System.out.println(formatMedium.format(dateTime));
// 実行結果
// 2023/12/17
DateTimeFormatter formatShort = DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT).withLocale(Locale.JAPAN);
System.out.println(formatShort.format(dateTime));
// 実行結果
// 2023/12/17
// ロケールがアメリカ
DateTimeFormatter formatFull_US = DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL).withLocale(Locale.US);
System.out.println(formatFull_US.format(dateTime));
// 実行結果
// Sunday, December 17, 2023
DateTimeFormatter formatLong_US = DateTimeFormatter.ofLocalizedDate(FormatStyle.LONG).withLocale(Locale.US);
System.out.println(formatLong_US.format(dateTime));
// 実行結果
// December 17, 2023
DateTimeFormatter formatMedium_US = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).withLocale(Locale.US);
System.out.println(formatMedium_US.format(dateTime));
// 実行結果
// Dec 17, 2023
DateTimeFormatter formatShort_US = DateTimeFormatter.ofLocalizedDate(FormatStyle.SHORT).withLocale(Locale.US);
System.out.println(formatShort_US.format(dateTime));
// 実行結果
// 12/17/23