1. ホーム
  2. java

[解決済み] タイムゾーンフォーマット、タイムゾーンの知り方

2022-03-01 21:11:59

質問

次のような形式のタイムスタンプを取得しました。

2017-09-27T16:19:24+0000

どのタイムゾーンか知るには?また DateTimeFormatter Java 8を使用している場合は?

解決方法は?

ZonedDateTime

Java 8 を使用しているとのことですが、ZonedDateTime を活用するには、次のようにします。

ZonedDateTime zdt = ZonedDateTime.parse("2017-09-27T16:19:24+0000", DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ssZ")

構文解析のルールは DateTimeFormatterのドキュメント . これは、正確には ISO 8601 ISO_OFFSET_DATE_TIME というオフセットが書かれているはずです。 +00:00 ではなく +0000

タイムゾーンとタイムオフセット

次に オフセット という情報を zdt.getZone() . ただし、取得できるのは オフセットID :

  • Z - UTC (ISO-8601)の場合。
  • +hh:mmまたは-hh:mm -秒が0の場合(ISO-8601)
  • +hh:mm:ss または -hh:mm:ss - 秒が0でない場合 (ISO-8601でない場合)

あるコメントで言われていたように、以下のことに注意してください。 タイムオフセットはタイムゾーンではありません : あるタイムゾーン(例えばフランスの時間)は、一年中同じオフセットを持つわけではありません(夏時間と冬時間)。