そもそもUTCをDBに保存しないのはなぜですか?ほとんどの場合、DateTime
通常は特定の時点を参照するため、UTCで保存する必要があります。これは、物理的な意味で時間を参照するものすべてに当てはまります。また、時間が単調で増加し、一意であると想定するものはすべて当てはまりますが、ほとんどの現地時間には当てはまりません。
場合によっては、現地時間を使用するのが理にかなっています。バスが毎日午前9時に出発するとします。これは、2つの連続するイベントの間に24時間が経過することを意味します。ただし、タイムゾーンにDSTがある場合は、年に1回、それぞれ23時間、25時間の間隔になります。
ただし、この種のデータを処理する必要がある場合は、単純なDateTime
トリックをしません。 DSTルールは変更される可能性があり、タイムゾーンは変更される可能性があります。C#では、適用されるDSTルールは現在のルールです。 日付が「履歴」であっても有効です。したがって、履歴日付を使用した日付演算は大混乱を引き起こす可能性があります。本当にこれに対処する必要がある場合は、少なくとも、どれを保存する必要があります。 時刻が入っているタイムゾーン(オフセットだけでなく、isLocal
だけでも フラグ)。
バイナリに保存できるテキスト情報をデータベースに保存することは、私にはあまりエレガントに思えません。また、中間層の値を変更することもありません。前者は非効率的です 前述の現地時間の特殊性に悩まされていますが、後者には2番目の問題しかありません。
ところで、後者を実現するには、プロパティを[BsonDateTimeOptions(Kind=DateTimeKind.Local)]
で装飾できます。 、これは変換を行いますが、もちろん同じ問題が発生します。