TL; DRは
LocalDateTime.parse("2016-09-27T19:35:32.717").atZone(ZoneOffset.UTC)
詳細
あなたの入力文字列がないUTC値です:2016-09-27T19:35:32.717
。そのStringにはoffset-from-UTCまたはtime zoneに関する情報がありません。
現在は古くなっている厄介な古い日時クラスを、java.timeクラスに置き換えて使用しています。
LocalDateTime
、オフセットまたはタイムゾーンを欠いLocalDateTime
対象として、その文字列を解析します。
この入力文字列は、日付時刻文字列のISO 8601標準に準拠しています。 java.timeクラスは、文字列の解析/生成時にデフォルトでISO 8601形式を使用します。したがって、書式設定パターンを指定する必要はありません。
LocalDateTime ldt = LocalDateTime.parse("2016-09-27T19:35:32.717");
OffsetDateTime
あなたは文字列は、UTCのモーメントを表し、その後OffsetDateTime
を取得するためにオフセットを適用することを意図したことが確実にわかっているコンテキストによって場合。定義済み定数ZoneOffset.UTC
を使用してください。
OffsetDateTime odt = ldt.atZone(ZoneOffset.UTC);
そこから必要に応じて、さまざまな形式で文字列を生成するためにDateTimeFormatter
を使用することができます。
ZonedDateTime
あなたには、いくつかの特定の地域のタイムゾーンのレンズを通してその同じ瞬間を表示したい場合は、ZonedDateTime
を取得するためにZoneId
を適用します。
タイムゾーンは、夏時間(DST)などの異常を処理するための規則のセットである、UTCからのオフセット(と)です。
proper time zone nameをcontinent/region
の形式で指定します。 EST
またはIST
のような3〜4文字の略語は、標準化されておらず、一意ではなく(!)、実際のタイムゾーンではないので使用しないでください。
ZoneId z = ZoneId.of("America/Montreal");
ZonedDateTime zdt = odt.atZoneSameInstant(z);
必要に応じて、ユーザーの現在の既定のタイムゾーンを取得できます。しかし、このデフォルトはいつでも変更できることに注意してください。実行時にはでもです。重要な場合は、想定するのではなく意図した/希望する時間帯をユーザーに尋ねる必要があります。 java.timeについて
ZoneId z = ZoneId.systemDefault();
java.timeフレームワークは、Java 8に組み込まれており、後にされています。これらのクラスは、java.util.Date
,.Calendar
,& java.text.SimpleDateFormat
などの面倒な古いlegacy日時クラスに取って代わります。
にあるJoda-Timeプロジェクトは、java.timeへの移行を推奨しています。
詳しくはOracle Tutorialをご覧ください。そして、多くの例と説明のためにStack Overflowを検索してください。仕様はJSR 310です。
ここで、java.timeクラスを取得するには?
ThreeTen-Extraプロジェクトでは、追加のクラスでjava.timeを拡張します。このプロジェクトは、将来のjava.timeへの追加の可能性を証明する土台です。ここでは、Interval
、YearWeek
、YearQuarter
、moreなどの便利なクラスがあります。
フォーマッタのタイムゾーンが正しく設定されていません – xAqweRx
希望するタイムゾーンのオフセットは? –
アプリはさまざまな国で使用されるため、ローカルタイムゾーンを使用する必要があります –