【问题标题】:Local Time & UTC Confusion C#, SQL Server本地时间和 UTC 混淆 C#, SQL Server
【发布时间】:2013-07-30 04:26:02
【问题描述】:

我将所有日期作为 UTC 日期时间存储到 SQL Server。我也有存储在用户配置文件中的每个用户的时区 ID。

现在,当用户请求返回数据时,我想使用我为特定用户存储在配置文件中的时区显示每条记录的用户本地时间。

什么是最简单和优化的方法(因为我同时处理大量记录)在返回数据时将所有日期和时间即时转换为特定时区?在SQLC# 中都可以...

非常重要的问题是,假设在悉尼创建了一条记录,当时夏令时“开启”,而现在夏令时“关闭”。由于记录是在夏令时“开启”时创建的,它是否仍会转换相同的时间,还是会根据当前时区状态返回转换(即夏令时为“关闭”)???

人们只能看到他们从特定对象创建的那些记录

【问题讨论】:

    标签: sql datetime timezone utc date-conversion


    【解决方案1】:

    假设在悉尼创建了一条记录,当时夏令时“开启”,而现在夏令时“关闭”。由于记录是在夏令时“开启”时创建的,它是否仍会转换相同的时间,还是会根据当前时区状态返回转换(即夏令时为“关闭”)

    记录包含 UTC 日期和时间。这将进入 DST ON 或 DST OFF 时期,这是确定性的。与 DST现在是否生效无关。相反(存储本地时间,尝试提取 UTC)由于 DST 更改时的重叠时间而不确定(如果它们落入 DST 进入时发生两次的 60 分钟内,则一小部分本地时间无法确定性地转换为 UTC效果,假设 DST 为 60 分钟)。

    至于问题:在表示层中转换日期。使用TimeZoneInfo.ConvertTimeFromUtc

    【讨论】:

    • 感谢您的解释。所以最后只是为了确认,将日期和时间作为 UTC 存储在数据库中总是一个好习惯,不是吗?!如果我将 UTC 存储在数据库中,它将始终根据该 UTC 日期时间的 DST 是 ON 还是 OFF,为我提供特定时区的正确时间,并且不会考虑该特定时区 DST 的当前情况。
    猜你喜欢
    • 2016-07-29
    • 2014-06-10
    • 2022-11-23
    • 2017-01-19
    • 1970-01-01
    • 1970-01-01
    • 2017-12-10
    • 2014-04-14
    • 1970-01-01
    相关资源
    最近更新 更多