微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为时区敏感应用程序存储DateTimeOffset

如何解决为时区敏感应用程序存储DateTimeOffset

| 如果我使用DateTimeOffset存储所有日期,是否仍需要始终将日期转换为UTC,还是仅使用DateTimeOffset效率高?     

解决方法

        答案是-这取决于。 “ 0”是时间戳+ UTC偏移。问题在于,多个时区可以共享相同的偏移量,但它们可能不共享相同的夏令时规则(此外),并且由于since0ѭ没有任何TimeZone的概念,因此会导致歧义。但是,如果您要存储服务器端的时间戳记(可能不会显示给用户并且用户没有交互作用),那可能会很好。我猜可能是服务器端日志记录的一个例子。 恕我直言,在处理用户输入,用户可见,用户可查询等时间戳时,最安全的方法是存储2s并存储完整的时区信息。您可以使用
TimeZoneInfo.Serialize(...)
,它将完整的时区信息输出为字符串并将其保留在数据库中,然后您可以稍后通过
TimeZoneInfo.Deserialize(...)
将其反序列化为TimeZoneInfo实例,并用于将
DateTime
转换为本地/ utc日期时间。这是安全的,因为没有歧义,而且即使时区发生了变化(而且时区也发生了变化,例如DST发生了变化),您的数据仍然保持一致。当然,您将需要更新数据库以使其保持同步(非常罕见)。 通过上述方法,您可以将DateTimes保存为UTC或Local,并且必须根据使用情况决定选择哪一个。在UTC中存储日期和时间时,一件有趣的事情是,用户的“今天”的概念变得稍微复杂了一些-您可以在我的博客上阅读该内容。     

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。