gpt4 book ai didi

asp.net-mvc - 为时区敏感应用程序存储 DateTimeOffset

转载 作者:行者123 更新时间:2023-12-02 02:13:37 25 4
gpt4 key购买 nike

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

最佳答案

答案是 - 这取决于情况。

DateTimeOffset是时间戳 + UTC 偏移量。问题是多个时区可以共享相同的偏移量,但它们可能不共享相同的夏令时规则(除其他外),并且自DateTimeOffset以来没有任何时区的概念,这会导致歧义。但是,如果您存储服务器端时间戳,则这可能没问题,这些时间戳不会显示给用户并且用户没有与之交互。我猜这可能是服务器端日志记录的一个例子。

恕我直言,处理用户输入、用户可见、用户可查询等时间戳时最安全的方法是存储 DateTime s 并存储完整的时区信息。您可以使用TimeZoneInfo.Serialize(...) ,它将完整的时区信息输出到一个字符串并将其保存在数据库中,稍后您可以通过 TimeZoneInfo.Deserialize(...) 将其反序列化为 TimeZoneInfo 实例。并用于转换DateTime本地/UTC 日期时间。它是安全的,因为没有歧义,而且即使时区发生变化(确实如此 - 例如 DST 变化),您的数据仍然是一致的。当然,您需要注意更新数据库以保持同步(非常罕见)。

通过上述方法,您可以将日期时间保存为 UTC 或本地日期,您必须根据用例决定使用哪一种。在 UTC 中存储日期和时间时,一件有趣的事情是用户的“今天”的概念变得稍微复杂一些 - 您可以在我的博客 here 上阅读相关内容。 .

关于asp.net-mvc - 为时区敏感应用程序存储 DateTimeOffset,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6320568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com