我将所有日期存储到SQL Server作为UTC日期时间。我也为用户个人资料中存储的每个用户提供了时区ID。
现在,当用户请求数据时,我想使用我在特定用户的个人资料中存储的时区显示每个记录的本地用户时间。
什么是最简单和优化的方式(因为我同时处理大量记录)在返回数据时动态地将所有日期和时间转换为特定时区? SQL
或C#
中的任何一方都可以......
非常重要的问题,让我们说有一个记录是从悉尼创造的,当时有白天节约" ON"现在,Day Light Saving是" OFF"。由于记录是在Day Light Saving为" ON"时创建的,它是否仍会转换相同的时间,或者它将根据当前时区状态返回转换(这是Day Light Saving是" OFF&# 34)???
人们只能看到他们从特定
创建的记录答案 0 :(得分:1)
假设有一个从悉尼创建的记录,当时有日间节能“开启”,现在日间节能为“关闭”。由于当Day Light Saving为“ON”时创建了记录,它是否仍然会转换相同的时间,或者它将根据当前时区状态返回转换(这是Day Light Saving为“OFF”)
记录包含UTC日期和时间。这将进入DST ON或DST OFF期间,确定性。 DST是否生效现在无关紧要。相反(存储当地时间,试图提取UTC)是不确定的,因为DST改变时的重叠时间(当DST进入时,如果它们落入发生两次的60分钟内,则无法确定性地将小范围的本地时间转换为UTC效果,假设DST为60分钟。
关于问题:转换表示层中的日期。使用TimeZoneInfo.ConvertTimeFromUtc
。