2016-04-10 16 views
2

デンマークではかなり長期間使用されている予約システムを開発、維持しています。NodaTime、予約時間にLocalDateTimeを使用する必要がありますか?

しかし、私たちは現在、1つのタイムゾーン以外の国にも広がっており、一部の顧客は複数のタイムゾーンにまたがるシステムを持つことになります。 私たちの素朴なDateTimeのアプローチは、今後私たちに問題をもたらす可能性があります。 私は、特定の目的のために特定のクラスを使用するNodaTimeアプローチが大好きです。これは、開発者にとって学習曲線を簡単にするはずです。

ただし、保存するものの1つは、特定のレストランでの特定の予約の到着時間です。 これは私がLocalDateTimeを使用する場合と同じように聞こえますが、異なるタイムゾーンのコンピュータに座っている管理者であっても、正しい到着時間(レストランのTimeZoneに対する時間タイムゾーンは使用されません)。

ある時点で、私はこの時点で意味をなさないさまざまな時間帯にこれらの時刻を表示したい場合は、レストランのTimeZoneを使用してこれを行うことができます時間。

使用する正しいクラスは、SQLServerのdatetimeとして保存されたLocalDateTimeですか?

このような用途のためにZonedDateTimeを考慮する必要がある引数はありますか?

答えて

3

予約のローカル日付/時刻に関連付けられているタイムゾーンがわかっている場合は、ほとんどの場合問題ありません。恐らく、タイムゾーンは予約のレストランに関連付けられています。あなたがに実行できる

一つの問題は、LocalDateTimeDateTimeZoneペアは常に明確ない時間の瞬間を決めることです。あなたのレストランが夜遅くに開かれ、夏時間から冬の午前2時(午前1時)に行くと、1.15amでの予約は、実際には1.45amでの予約より遅れる可能性があります。そのため、ZonedDateTimeには、LocalDateTimeDateTimeZoneの参照、およびあいまいさを解決するOffsetが含まれています。

さらに、LocalDateTimeを使用すると、いくつかのクエリを実行するのが難しくなる可能性があります。予約を実際の発生順序に入れたい場合は、ZonedDateTime値に解決する必要があります。しかし、とにかくこれらのクエリは必要ないかもしれません。

基本的には、LocalDateTimeDateTimeZoneを予約する必要があります。あいまいさを解決する方法(または冬の時間から夏の時間にスキップする時間)を検討する方法を検討する必要があります。あなたがその情報/ポリシーを持っているなら、それは問題ありません。

+0

パーフェクト。ありがとうジョン、私はDSTの潜在的な問題を認識しています。しかし、私たちのオンライン予約システムやUIのどれもがこの問題を処理していません。私たちは通常、夜間に予約をすることはありません。たとえこれを持っていても、複雑さが軽減されても受け入れられるトレードオフになります。 –

関連する問題