0

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

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

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

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

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

4

1 回答 1

1

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

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

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

于 2013-07-30T07:10:39.643 回答