Daylight Time Zone conversion in C# asp.net
如何使用C#asp.net检查特定时区是否属于"DAYLIGHTTIMEZONE"?
如果时区属于"DAYLIGHTTIMEZONE",我应该将时间更改为标准时区吗?
我将获得用户输入的时区(Windows操作系统中列出的时区)并将其存储在数据库中,每当用户登录时,我将根据用户选择的时区显示时间和日期。现在,白天是什么角色 在这里玩? 如果特定时区属于"DaylightsavingZone",是否应进行任何更改。
-
msdn.microsoft.com/en-us/library/system.timezone.aspx
-
@Soner:只有当OP真正需要那些更关心声誉而非关心帮助人们的人的答案时。 这个问题编写得相当好,这对我来说已经足够了......
使用.NET 3.5中引入的TimeZoneInfo类。
目前尚不清楚你的更大目标是什么,但基本上TimeZoneInfo应涵盖你想要做的任何事情,例如从一个时区转换到另一个时区。它并不总是最简单的类正确使用,部分是因为DateTime类型的设计很糟糕,不幸的是:(
我正在(偶尔!)在一个名为Noda Time的.NET新日期和时间库上工作,但遗憾的是还没有准备好:(
编辑:好的,所以你的步骤应该是:
-
找出如何以适当的形式从TimeZoneInfo获取用户的时区。您最终希望将Id存储在数据库中。
-
当您想要显示时间时:
-
使用FindSystemTimeZoneById获取时区
-
使用DateTimeOffset.UtcNow获取当前时间
-
调用TimeZoneInfo.ConvertTime转换为目标时区
-
为用户适当地格式化结果
-
@Pranesh:对。编辑解释如何做到这一点......
-
@Jon两个悲伤的表情符号在一个答案中?听起来有人需要一个拥抱。
-
@bzlm:.NET中当前的日期和时间状态确实让我感到难过,是的......
-
非常感谢Skeet ...我还有一个疑问,即使特定时区属于"DAYLIGHT TIMEZONE",是否可以遵循相同的上述步骤?
-
@Pranesh:TimeZoneInfo为您排序所有这些。
-
Skeet考虑这种情况:特定时区属于"DAYLIGHT SAVING TIMEZONE",例如:太平洋标准时间,因此timezoneinfo.converttime方法会根据"DAYLIGHT SAVING TIME"自动生成最终输出,否则我应该处理白天时间手动差异?
-
@Pranesh:我一直在说:它为你做了所有这些。就试一试吧! (我不确定为什么你一直把全天候的夏令时放在引用它,顺便说一下......)
-
非常感谢...它完美地工作了Skeet
我想你正在寻找TimeZone.IsDaylightSavingTime
-
并非没有太多额外的努力 - 否则将代表服务器的时区。 TimeZone实际上已被弃用,以支持TimeZoneInfo。
-
@Jon为什么要投票......我正在检查这个2.0 ...在这个版本有什么更好的?
-
是的,尝试在Compact Framework中这样做,情况更糟。