サーバーで発生したイベントの日時をUTCで保存して表示する必要があります。 Instant.now()またはLocalDateTime.now(ZoneOffset.UTC)を使用するオプションがあります。インスタントvs LocalDateTime - 他の優先順位を優先する場合
どちらを優先したらいいですか?
サーバーで発生したイベントの日時をUTCで保存して表示する必要があります。 Instant.now()またはLocalDateTime.now(ZoneOffset.UTC)を使用するオプションがあります。インスタントvs LocalDateTime - 他の優先順位を優先する場合
どちらを優先したらいいですか?
これは、データの処理内容によって異なります。 2つのタイプは概念的に異なります。
イベントがUTCの午前8時に起こったとします。
LocalDateTimeを取得すると、タイムゾーン情報が失われてしまい、技術的にタイムゾーンになる可能性があります。午前8時(UTC)または午前8時(UTC =午後1時)です。つまり、LocalDateTimeは実際にはUTCの瞬間であるということをあなたが知っておく必要があります。
インスタントを使用する場合は、タイムゾーンに関係なく、正確にどの瞬間が参照されているかを知っており、外部の「知識」や慣例は必要ありません。しかし、時間帯に関する情報がないので、英国の午前9時(CET)または午前3時(EST)の午前8時(これらはすべて同じ瞬間を表します)であるかどうかはわかりません。
最後に、瞬間とそれを関連付けるべきタイムゾーンの両方が必要な場合、インスタントとタイムゾーン情報を持つZonedDateTimeまたはOffsetDateTimeを使用できます。
ほとんどのフローでInstantを使用する方が適しているようです。そして、ユーザーに情報を表現する必要があるときだけ、変換を行います:LocalDateTime.ofInstant(instantValue、ZoneOffset.UTC)(時間や日のような特定の日付と時刻のコンポーネントを直接抽出することは不可能なのでインスタントタイプから) – galbarm
はい、それは意味をなさないでしょう。 – assylias