ZonedDateTimeを文字列にフォーマットします
1. 概要
このクイックチュートリアルでは、ZonedDateTimeをString。に変換する方法を説明します。
また、String。からZonedDateTimeを解析する方法についても説明します。
2. ZonedDateTimeの作成
まず、UTCのタイムゾーンを持つZonedDateTimeから始めます。 これを達成する方法はいくつかあります。
年、月、日などを指定できます。
ZonedDateTime zonedDateTimeOf = ZonedDateTime.of(2018, 01, 01, 0, 0, 0, 0, ZoneId.of("UTC"));
現在の日時からZonedDateTimeを作成することもできます。
ZonedDateTime zonedDateTimeNow = ZonedDateTime.now(ZoneId.of("UTC"));
または、既存のLocalDateTimeからZonedDateTimeを作成できます。
LocalDateTime localDateTime = LocalDateTime.now();
ZonedDateTime zonedDateTime = ZonedDateTime.of(localDateTime, ZoneId.of("UTC"));
3. ZonedDateTimeからString
それでは、 ZonedDateTimeをStringに変換しましょう。このために、はDateTimeFormatterクラスを使用します。
タイムゾーンデータを表示するために使用できる特別なフォーマッターがいくつかあります。 フォーマッターの完全なリストはここにありますが、より一般的なものをいくつか見ていきます。
にタイムゾーンオフセットを表示させたい場合は、フォーマッター「Z」または「X」を使用できます。
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MM/dd/yyyy - HH:mm:ss Z");
String formattedString = zonedDateTime.format(formatter);
これにより、次のような結果が得られます。
02/01/2018 - 13:45:30 +0000
タイムゾーン名を含めるには、小文字の「z」を使用できます。
DateTimeFormatter formatter2 = DateTimeFormatter.ofPattern("MM/dd/yyyy - HH:mm:ss z");
String formattedString2 = zonedDateTime.format(formatter2);
これの出力は次のようになります。
02/01/2018 - 13:45:30 UTC
4. StringからZonedDateTime
このプロセスは逆に機能することもあります。 文字列を取得して、ZonedDateTimeに戻すことができます。
これを行う1つのオプションは、ZonedDateTimeクラスの static parse()メソッドを使用することです:
ZonedDateTime zonedDateTime = ZonedDateTime.parse("2011-12-03T10:15:30+01:00");
このメソッドは、ISO_ZONED_DATE_TIMEフォーマッターを使用します。 DateTimeFormatterパラメーターを受け取るメソッドのオーバーロードバージョンもあります。 ただし、文字列にはゾーン識別子が含まれている必要があります。含まれていないと、例外が発生します。
assertThrows(DateTimeParseException.class, () ->
ZonedDateTime.parse("2011-12-03T10:15:30", DateTimeFormatter.ISO_DATE_TIME));
StringからZonedDateTimeを取得する2番目のオプションには、2つのステップが含まれます。
ZoneId timeZone = ZoneId.systemDefault();
ZonedDateTime zonedDateTime = LocalDateTime.parse("2011-12-03T10:15:30",
DateTimeFormatter.ISO_DATE_TIME).atZone(timeZone);
log.info(zonedDateTime.format(DateTimeFormatter.ISO_ZONED_DATE_TIME));
この間接的な方法は、日時とゾーンIDを単純に組み合わせたものです。
INFO: 2011-12-03T10:15:30+02:00[Europe/Athens]
文字列から日付への解析の詳細については、より詳細な日付解析articleを確認してください。
5. 結論
この記事では、 ZonedDateTime を作成する方法と、それをString。としてフォーマットする方法を見てきました。
また、日時文字列を解析してZonedDateTimeに変換する方法についても簡単に説明しました。
このチュートリアルのソースコードは、Githubでから入手できます。