Java : 文字列と日付・時刻の変換
日付・時刻を表す文字列としては、例えば
- 2100年05月10日
- 23時59分30秒
- 2100-05-10T07:30:10
といったものがあります。
このような文字列から、Java の日付・時刻クラスである LocalDate、LocalTime、LocalDateTime への変換方法をご紹介します。
用語の定義
本記事では、時間に関する用語を以下のように定義します。
用語 | 定義 | 例 |
---|---|---|
日付 | 年と月と日 | 2100/5/4、1999年12月31日 |
時刻 | 時と分と秒 | 12:30:59、7時30分45秒 |
日時 | 日付と時刻 | 2100/5/4 12:30:59、1899年12月31日 7時30分45秒 |
簡単なまとめ
文字列と日付・時刻を変換するコード例の簡単なまとめです。
もう少し詳しく知りたいかたは、後述する「変換」をご参照ください。
変換 | 表記 | コード例 |
---|---|---|
日付 → 文字列 | ISO 8601 |
|
yyyy年MM月dd日 |
|
|
文字列 → 日付 | ISO 8601 |
|
yyyy年MM月dd日 |
|
|
時刻 → 文字列 | ISO 8601 |
|
HH時mm分ss秒 |
|
|
文字列 → 時刻 | ISO 8601 |
|
HH時mm分ss秒 |
|
|
日時 → 文字列 | ISO 8601 |
|
yyyy年MM月dd日 HH時mm分ss秒 |
|
|
文字列 → 日時 | ISO 8601 |
|
yyyy年MM月dd日 HH時mm分ss秒 |
|
文字列表記
日付・時刻を文字列に変換するためには、まず日付・時刻をどのような 表記 にするのか、というのを決めなければなりません。
例えば、日本語では日時を
- 2100年5月10日 14時30分59秒
と表記できます。
- 2100/5/10 14:30
という表記なんかもよく見ますね。
ISO 8601
日付・時刻の文字列表記として、国際規格の ISO 8601 というものがあります。
Java に限らずいろいろなプログラミング言語でお目にかかるので、理解しておいて損はないでしょう。
形式 | 表記例 (2099年4月28日 16時47分23秒) |
---|---|
基本形式 | 20990428T164723 |
拡張形式 | 2099-04-28T16:47:23 |
2つの形式がありますが、Java では拡張形式がよく使われています。
DateTimeFormatter に用意されている定数にも拡張形式が多めです。
final var dateTime = LocalDateTime.of(2099, 4, 28, 16, 47, 23);
final var str1 = dateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
System.out.println(str1); // 2099-04-28T16:47:23
final var str2 = dateTime.format(DateTimeFormatter.ISO_LOCAL_DATE);
System.out.println(str2); // 2099-04-28
final var str3 = dateTime.format(DateTimeFormatter.BASIC_ISO_DATE);
System.out.println(str3); // 20990428
final var str4 = dateTime.format(DateTimeFormatter.ISO_LOCAL_TIME);
System.out.println(str4); // 16:47:23
// LocalDateTime.toString も ISO 8601 形式
final var str5 = dateTime.toString();
System.out.println(str5); // 2099-04-28T16:47:23
// タイムゾーンあり
final var dateTime = ZonedDateTime.of(
2099, 4, 28, 16, 47, 23, 0, ZoneId.systemDefault());
final var str = dateTime.format(DateTimeFormatter.ISO_ZONED_DATE_TIME);
System.out.println(str); // 2099-04-28T16:47:23+09:00[Asia/Tokyo]
ちょっと見慣れないのが、日付と時刻を区切る文字として T を使っているところでしょうか。
ユーザに見せる表記としては向いていませんが、プログラム内で管理するには ISO 8601 を使うと便利なことも多いです。
(例えば、ユーザには見せないテキストファイルに日時を保存したい場合など)
日本向けの表記
ロケールが日本の場合は、次のような 表記(フォーマッター) が用意されています。
フォーマッターの取得には DateTimeFormatter.ofLocalizedDateTime を使います。
final var dateTime = ZonedDateTime.of(
2099, 4, 28, 16, 47, 23, 0, ZoneId.systemDefault());
final var formatter1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL);
System.out.println(dateTime.format(formatter1)); // 2099年4月28日火曜日 16時47分23秒 日本標準時
final var formatter2 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);
System.out.println(dateTime.format(formatter2)); // 2099年4月28日 16:47:23 JST
final var formatter3 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM);
System.out.println(dateTime.format(formatter3)); // 2099/04/28 16:47:23
final var formatter4 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT);
System.out.println(dateTime.format(formatter4)); // 2099/04/28 16:47
独自の表記
独自の表記にしたい場合は書式設定を使います。
よく使う書式を一部抜粋します。
記号 | 説明 | 例 |
---|---|---|
yyyy | 年(4桁で表示) | 2099 |
MM | 月(01~12) | 12 |
dd | 日(01~31) | 10 |
HH | 時(00~23) | 07 |
mm | 分(00~59) | 30 |
ss | 秒(00~59) | 15 |
詳細については、DateTimeFormatter API 仕様 をご確認ください。
final var dateTime = LocalDateTime.of(2099, 1, 2, 3, 4, 5);
final var formatter1 = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
System.out.println(dateTime.format(formatter1)); // 2099/01/02 03:04:05
final var formatter2 = DateTimeFormatter.ofPattern("y/M/d H:m:s");
System.out.println(dateTime.format(formatter2)); // 2099/1/2 3:4:5
final var dateTime = LocalDateTime.of(2100, 5, 1, 15, 0, 0);
final var formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日(E) a hh:mm");
System.out.println(dateTime.format(formatter)); // 2100年05月01日(土) 午後 03:00
変換
日付 → 文字列
日付から文字列への変換は、LocalDate.format メソッドと DateTimeFormatter を使います。
定義済みのフォーマッタを使う例です。
final var date = LocalDate.of(2099, 5, 10);
System.out.println(date.format(DateTimeFormatter.ISO_LOCAL_DATE)); // 2099-05-10
System.out.println(date.format(DateTimeFormatter.BASIC_ISO_DATE)); // 20990510
// LocalDate.toString も ISO 8601 形式
final var str = date.toString();
System.out.println(str); // 2099-05-10
独自のフォーマッタを使う例です。
final var date = LocalDate.of(2100, 5, 1);
final var formatter1 = DateTimeFormatter.ofPattern("yyyy/MM/dd");
System.out.println(date.format(formatter1)); // 2100/05/01
final var formatter2 = DateTimeFormatter.ofPattern("y/M/d");
System.out.println(date.format(formatter2)); // 2100/5/1
final var formatter3 = DateTimeFormatter.ofPattern("yyyy年MM月dd日(E)");
System.out.println(date.format(formatter3)); // 2100年05月01日(土)
文字列 → 日付
文字列から LocalDate へ変換するには、LocalDate.parse メソッドと DateTimeFormatter を使います。
定義済みのフォーマッタを使う例です。
final var date1 = LocalDate.parse("2099-05-10", DateTimeFormatter.ISO_LOCAL_DATE);
System.out.println(date1); // 2099-05-10
// ISO_LOCAL_DATE の場合はフォーマッタを省略できます。
final var date2 = LocalDate.parse("2099-05-10");
System.out.println(date2); // 2099-05-10
final var date3 = LocalDate.parse("20990510", DateTimeFormatter.BASIC_ISO_DATE);
System.out.println(date3); // 2099-05-10
// 月と日の 0 は省略できません。(例外が発生します)
try {
final var date4 = LocalDate.parse("2099-5-1");
} catch (DateTimeParseException e) {
System.out.println("DateTimeParseException! : " + e.getMessage());
}
// 結果
// ↓
//DateTimeParseException! : Text '2099-5-1' could not be parsed at index 5
独自のフォーマッタを使う例です。
final var formatter = DateTimeFormatter.ofPattern("y/M/d");
final var date1 = LocalDate.parse("2099/05/01", formatter);
System.out.println(date1); // 2099-05-01
// 月と日の 0 を省略した表記も許容されます。
final var date2 = LocalDate.parse("2099/5/1", formatter);
System.out.println(date2); // 2099-05-01
final var formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日");
final var date = LocalDate.parse("2099年05月01日", formatter);
System.out.println(date); // 2099-05-01
時刻 → 文字列
時刻から文字列への変換は、LocalTime.format メソッドと DateTimeFormatter を使います。
定義済みのフォーマッタを使う例です。
final var time = LocalTime.of(7, 30, 10);
System.out.println(time.format(DateTimeFormatter.ISO_LOCAL_TIME)); // 07:30:10
// LocalTime.toString も ISO 8601 形式
final var str = time.toString();
System.out.println(str); // 07:30:10
独自のフォーマッタを使う例です。
final var time = LocalTime.of(1, 2, 3);
final var formatter1 = DateTimeFormatter.ofPattern("HH:mm:ss");
System.out.println(time.format(formatter1)); // 01:02:03
final var formatter2 = DateTimeFormatter.ofPattern("H:m:s");
System.out.println(time.format(formatter2)); // 1:2:3
final var time = LocalTime.of(7, 30, 10);
final var formatter = DateTimeFormatter.ofPattern("HH時mm分ss秒");
System.out.println(time.format(formatter)); // 07時30分10秒
final var formatter = DateTimeFormatter.ofPattern("a hh:mm");
final var time1 = LocalTime.of(10, 15);
System.out.println(time1.format(formatter)); // 午前 10:15
final var time2 = LocalTime.of(17, 30);
System.out.println(time2.format(formatter)); // 午後 05:30
文字列 → 時刻
文字列から LocalTime へ変換するには、LocalTime.parse メソッドと DateTimeFormatter を使います。
定義済みのフォーマッタを使う例です。
final var time1 = LocalTime.parse("07:30:10", DateTimeFormatter.ISO_LOCAL_TIME);
System.out.println(time1); // 07:30:10
// ISO_LOCAL_TIME の場合はフォーマッタを省略できます。
final var time2 = LocalTime.parse("07:30:10");
System.out.println(time2); // 07:30:10
// 0 の省略はできません。(例外が発生します)
try {
final var time3 = LocalTime.parse("1:2:3");
} catch (DateTimeParseException e) {
System.out.println("DateTimeParseException! : " + e.getMessage());
}
// 結果
// ↓
//DateTimeParseException! : Text '1:2:3' could not be parsed at index 0
独自のフォーマッタを使う例です。
final var formatter = DateTimeFormatter.ofPattern("H:m:s");
final var time1 = LocalTime.parse("01:02:03", formatter);
System.out.println(time1); // 01:02:03
// 0 を省略した表記も許容されます。
final var time2 = LocalTime.parse("1:2:3", formatter);
System.out.println(time2); // 01:02:03
final var formatter = DateTimeFormatter.ofPattern("HH時mm分ss秒");
final var time = LocalTime.parse("07時30分10秒", formatter);
System.out.println(time); // 07:30:10
final var formatter = DateTimeFormatter.ofPattern("a hh:mm");
final var time1 = LocalTime.parse("午前 10:15", formatter);
System.out.println(time1); // 10:15
final var time2 = LocalTime.parse("午後 05:30", formatter);
System.out.println(time2); // 17:30
日時 → 文字列
日時から文字列への変換は、LocalDateTime.format メソッドと DateTimeFormatter を使います。
定義済みのフォーマッタを使う例です。
final var dateTime = LocalDateTime.of(2099, 5, 10, 7, 30, 10);
final var str1 = dateTime.format(DateTimeFormatter.ISO_LOCAL_DATE_TIME);
System.out.println(str1); // 2099-05-10T07:30:10
// LocalDateTime.toString も ISO 8601 形式
final var str2 = dateTime.toString();
System.out.println(str2); // 2099-05-10T07:30:10
ローカライズされたフォーマッタを使う例です。
final var dateTime = LocalDateTime.of(2099, 5, 10, 7, 30, 10);
final var formatter1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM);
System.out.println(dateTime.format(formatter1)); // 2099/05/10 7:30:10
final var formatter2 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT);
System.out.println(dateTime.format(formatter2)); // 2099/05/10 7:30
// FULL と LONG はタイムゾーンがないと例外が発生します。
try {
final var formatter3 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL);
final var str = dateTime.format(formatter3);
} catch (DateTimeException e) {
System.out.println("DateTimeException! : " + e.getMessage());
}
// 結果
// ↓
//DateTimeException! : Unable to extract ZoneId from temporal 2099-05-10T07:30:10
独自のフォーマッタを使う例です。
final var dateTime = LocalDateTime.of(2099, 5, 1, 2, 3, 4);
final var formatter1 = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss");
System.out.println(dateTime.format(formatter1)); // 2099/05/01 02:03:04
final var formatter2 = DateTimeFormatter.ofPattern("y/M/d H:m:s");
System.out.println(dateTime.format(formatter2)); // 2099/5/1 2:3:4
final var dateTime = LocalDateTime.of(2099, 5, 1, 10, 15, 30);
final var formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH時mm分ss秒");
System.out.println(dateTime.format(formatter)); // 2099年05月01日 10時15分30秒
文字列 → 日時
文字列から LocalDateTime へ変換するには、LocalDateTime.parse メソッドと DateTimeFormatter を使います。
定義済みのフォーマッタを使う例です。
final var dateTime1 = LocalDateTime.parse(
"2099-05-10T07:30:10", DateTimeFormatter.ISO_LOCAL_DATE_TIME);
System.out.println(dateTime1); // 2099-05-10T07:30:10
// ISO_LOCAL_DATE_TIME の場合はフォーマッタを省略できます。
final var dateTime2 = LocalDateTime.parse("2099-05-10T07:30:10");
System.out.println(dateTime2); // 2099-05-10T07:30:10
// 月・日や時刻は 0 の省略ができません。(例外が発生します)
try {
final var dateTime3 = LocalDateTime.parse("2099-5-1T1:2:3");
} catch (DateTimeParseException e) {
System.out.println("DateTimeParseException! : " + e.getMessage());
}
// 結果
// ↓
//DateTimeParseException! : Text '2099-5-1T1:2:3' could not be parsed at index 5
ローカライズされたフォーマッタを使う例です。
final var formatter1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM);
final var dateTime1 = LocalDateTime.parse("2099/05/10 7:30:10", formatter1);
System.out.println(dateTime1); // 2099-05-10T07:30:10
final var formatter2 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT);
final var dateTime2 = LocalDateTime.parse("2099/05/10 7:30", formatter2);
System.out.println(dateTime2); // 2099-05-10T07:30
独自のフォーマッタを使う例です。
final var formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH時mm分ss秒");
final var dateTime = LocalDateTime.parse("2099年05月10日 05時30分45秒", formatter);
System.out.println(dateTime); // 2099-05-10T05:30:45
final var formatter = DateTimeFormatter.ofPattern("y/M/d H:m:s");
final var dateTime1 = LocalDateTime.parse("2099/05/01 02:03:04", formatter);
System.out.println(dateTime1); // 2099-05-01T02:03:04
// 0 を省略した表記も許容されます。
final var dateTime2 = LocalDateTime.parse("2099/5/1 2:3:4", formatter);
System.out.println(dateTime2); // 2099-05-01T02:03:04
日時(タイムゾーンあり) → 文字列
日時(タイムゾーンあり)から文字列への変換は、ZonedDateTime.format メソッドと DateTimeFormatter を使います。
定義済みのフォーマッタを使う例です。
final var formatter = DateTimeFormatter.ISO_ZONED_DATE_TIME;
final var dateTime1 = ZonedDateTime.of(
2099, 5, 10, 7, 30, 10, 0, ZoneId.systemDefault());
final var str1 = dateTime1.format(formatter);
System.out.println(str1); // 2099-05-10T07:30:10+09:00[Asia/Tokyo]
final var dateTime2 = ZonedDateTime.of(
2099, 5, 10, 7, 30, 10, 0, ZoneOffset.UTC);
final var str2 = dateTime2.format(formatter);
System.out.println(str2); // 2099-05-10T07:30:10Z
final var dateTime3 = ZonedDateTime.of(
2099, 5, 10, 7, 30, 10, 123000000, ZoneOffset.ofHoursMinutes(-4, -30));
final var str3 = dateTime3.format(formatter);
System.out.println(str3); // 2099-05-10T07:30:10.123-04:30
final var dateTime = ZonedDateTime.of(
2099, 5, 10, 7, 30, 10, 0, ZoneId.systemDefault());
// ZonedDateTime.toString も ISO 8601 形式
final var str = dateTime.toString();
System.out.println(str); // 2099-05-10T07:30:10+09:00[Asia/Tokyo]
ローカライズされたフォーマッタを使う例です。
final var dateTime = ZonedDateTime.of(
2100, 5, 10, 7, 30, 10, 0, ZoneId.systemDefault());
final var formatter1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL);
final var str1 = dateTime.format(formatter1);
System.out.println(str1); // 2100年5月10日月曜日 7時30分10秒 日本標準時
final var formatter2 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);
final var str2 = dateTime.format(formatter2);
System.out.println(str2); // 2100年5月10日 7:30:10 JST
final var formatter3 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM);
final var str3 = dateTime.format(formatter3);
System.out.println(str3); // 2100/05/10 7:30:10
final var formatter4 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.SHORT);
final var str4 = dateTime.format(formatter4);
System.out.println(str4); // 2100/05/10 7:30
独自のフォーマッタを使う例です。
final var dateTime = ZonedDateTime.of(
2100, 5, 1, 10, 15, 30, 0, ZoneId.systemDefault());
final var formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH時mm分ss秒 z");
final var str = dateTime.format(formatter);
System.out.println(str); // 2100年05月01日 10時15分30秒 JST
final var dateTime = ZonedDateTime.of(
2100, 5, 1, 2, 3, 4, 0, ZoneId.systemDefault());
final var formatter1 = DateTimeFormatter.ofPattern("yyyy/MM/dd HH:mm:ss VV");
final var str1 = dateTime.format(formatter1);
System.out.println(str1); // 2100/05/01 02:03:04 Asia/Tokyo
final var formatter2 = DateTimeFormatter.ofPattern("y/M/d H:m:s VV");
final var str2 = dateTime.format(formatter2);
System.out.println(str2); // 2100/5/1 2:3:4 Asia/Tokyo
文字列 → 日時(タイムゾーンあり)
文字列から ZonedDateTime へ変換するには、ZonedDateTime.parse メソッドと DateTimeFormatter を使います。
定義済みのフォーマッタを使う例です。
final var dateTime1 = ZonedDateTime.parse(
"2099-05-10T07:30:10+09:00[Asia/Tokyo]", DateTimeFormatter.ISO_ZONED_DATE_TIME);
System.out.println(dateTime1); // 2099-05-10T07:30:10+09:00[Asia/Tokyo]
// ISO_ZONED_DATE_TIME の場合はフォーマッタを省略できます。
final var dateTime2 = ZonedDateTime.parse("2099-05-10T07:30:10+09:00[Asia/Tokyo]");
System.out.println(dateTime2); // 2099-05-10T07:30:10+09:00[Asia/Tokyo]
final var dateTime3 = ZonedDateTime.parse("2099-05-10T07:30:10Z");
System.out.println(dateTime3); // 2099-05-10T07:30:10Z
// 月・日や時刻は 0 の省略ができません。(例外が発生します)
try {
final var dateTime4 = ZonedDateTime.parse("2099-5-1T2:3:4Z");
} catch (DateTimeParseException e) {
System.out.println("DateTimeParseException! : " + e.getMessage());
}
// 結果
// ↓
//DateTimeParseException! : Text '2099-5-1T2:3:4Z' could not be parsed at index 5
ローカライズされたフォーマッタを使う例です。
final var formatter1 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL);
final var dateTime1 = ZonedDateTime.parse("2100年5月10日月曜日 7時30分10秒 日本標準時", formatter1);
System.out.println(dateTime1); // 2100-05-10T07:30:10+09:00[Asia/Tokyo]
final var formatter2 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG);
final var dateTime2 = ZonedDateTime.parse("2100年5月10日 7:30:10 JST", formatter2);
System.out.println(dateTime2); // 2100-05-10T07:30:10+09:00[Asia/Tokyo]
// MEDIUM と SHORT は例外が発生します。
try {
final var formatter3 = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.MEDIUM);
final var str = ZonedDateTime.parse("2100/05/10 07:30:10", formatter3);
} catch (DateTimeParseException e) {
System.out.println("DateTimeParseException! : " + e.getMessage());
}
// 結果
// ↓
//DateTimeParseException! : Text '2100/05/10 07:30:10' could not be parsed:
// Unable to obtain ZonedDateTime from TemporalAccessor: {},
// ISO resolved to 2100-05-10T07:30:10 of type java.time.format.Parsed
独自のフォーマッタを使う例です。
final var formatter = DateTimeFormatter.ofPattern("yyyy年MM月dd日 HH時mm分ss秒 z");
final var dateTime = ZonedDateTime.parse("2100年05月01日 10時15分30秒 JST", formatter);
System.out.println(dateTime); // 2100-05-01T10:15:30+09:00[Asia/Tokyo]
final var formatter = DateTimeFormatter.ofPattern("y/M/d H:m:s VV");
final var dateTime1 = ZonedDateTime.parse("2100/05/01 02:03:04 Asia/Tokyo", formatter);
System.out.println(dateTime1); // 2100-05-01T02:03:04+09:00[Asia/Tokyo]
// 0 を省略した表記も許容されます。
final var dateTime2 = ZonedDateTime.parse("2100/5/1 2:3:4 Asia/Tokyo", formatter);
System.out.println(dateTime2); // 2100-05-01T02:03:04+09:00[Asia/Tokyo]
失敗例
文字列の表記とフォーマッタが一致しない場合は、非チェック例外の DateTimeException (もしくはそのサブクラス) が発生します。
// ISO形式では 0 の省略は許容されていません。
try {
final var date = LocalDate.parse("2100/5/1", DateTimeFormatter.ISO_LOCAL_DATE);
} catch (DateTimeParseException e) {
System.out.println("DateTimeParseException! : " + e.getMessage());
}
// 結果
// ↓
//DateTimeParseException! : Text '2100/5/1' could not be parsed at index 4
// フォーマッタの形式が違う場合
try {
final var date = LocalDate.of(2100, 5, 10);
final var str = date.format(DateTimeFormatter.ISO_TIME);
} catch (UnsupportedTemporalTypeException e) {
System.out.println("UnsupportedTemporalTypeException! : " + e.getMessage());
}
// 結果
// ↓
//UnsupportedTemporalTypeException! : Unsupported field: HourOfDay
関連記事
- 日付・時刻の基本
- Date, CalendarではなくLocalDateTime, ZonedDateTimeを使おう
- 日付と時刻、曜日の計算
- 現在時刻(日時)の取得いろいろ
- 現在の曜日(DayOfWeek)を取得
- ZoneIdとZoneOffsetの違い
- API 使用例
- Calendar (カレンダー)
- ChronoLocalDate
- ChronoLocalDateTime
- ChronoZonedDateTime
- Clock (時計)
- Date (日付・時刻)
- DateTimeException (日付・時刻の例外)
- DateTimeParseException (日付・時刻の解析例外)
- DayOfWeek (曜日)
- Duration (時間の量)
- Era (紀元)
- Instant (時点)
- InstantSource
- JapaneseDate (和暦を使った日付)
- LocalDate (日付・タイムゾーンなし)
- LocalDateTime (日時・タイムゾーンなし)
- LocalTime (時刻・タイムゾーンなし)
- Month (月)
- MonthDay (月・日)
- OffsetDateTime (日時・オフセットあり)
- OffsetTime (時刻・オフセットあり)
- Period (日付の量)
- Temporal
- TemporalAccessor
- TemporalAdjuster (日付・時刻の調整)
- TemporalAdjusters (日付・時刻の調整ユーティリティ)
- TimeZone (タイムゾーン)
- Year (年)
- YearMonth (年・月)
- ZonedDateTime (日時・タイムゾーンあり)
- ZoneId (タイムゾーンID)
- ZoneOffset (タイムゾーン・オフセット)