我将日程表以星期几、小时和分钟的形式存储在数据库中。当数据被读取时,我们创建一个DateTime
对象下一次出现的那一天、一小时和一分钟,但我需要修改它以使其能够感知 DST。如有必要,我可以修改数据库。
我知道DateTimeOffset
存储 UTC 日期/时间和偏移量。我也知道从这个 MSDN 博客条目 http://blogs.msdn.com/b/bclteam/archive/2010/11/28/time-travel-with-net-or-datetime-datetimeoffset-and-the-lost-dst-hour-greg.aspx that DateTimeOffset
应用于“使用夏令时”。
我很难理解的是DateTimeOffset
“使用夏令时的工作”。我的理解(几乎没有)是,夏令时是一项政治决定,不能纯粹从偏移中推断出来。如果这个结构只存储偏移量而不存储指定的时区或国家/地区,那么它怎么可能是 DST 友好的呢?
DateTimeOffset
本身并不真正了解夏令时,但是TimeZoneInfo
is. A DateTimeOffset
代表一个固定的时刻 - 所以你得到to a DateTimeOffset
通过时区感知的东西。换句话说,如果我要求DateTimeOffset
现在在英国,我最终会得到与 UTC 相差 +1 小时的结果。如果我要求一个DateTimeOffset
12 月在英国的某个时候,我最终得到的结果与 UTC 的偏移量为 0 小时。
如果您更改数据库以包含偏移量and你创建了DateTimeOffset
从用户选择的DateTime
(应该是“未指定”的类型)和他们的时区,那么考虑到夏令时,这应该会给你正确的偏移量。
但需要注意的一件事是:如果我现在安排“两年时间”的某件事,并且您现在确定偏移量,则该偏移量may将来不正确 - 例如,政府可能会在 DST 应用时进行更改,显然这不会改变数据库中存储的内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)