在Windows 7,时区设置中,您可以启用或禁用“自动调整时钟以节省日光”。如果禁用此功能,则PC时钟将始终显示标准时间,即使时区设置为夏时制之后的时区。
此question询问是否启用DST,但答案只说明当前日期/时间是否在DST规则内,因此应该对其进行调整,但操作系统的设置要求将时间保持在标准时区。
如何从C#中获得“夏时制自动调节时钟”
发布于 2014-08-16 03:50:36
如果您只想知道本地时区是否支持DST,请使用:
bool hasDST = TimeZoneInfo.Local.SupportsDaylightSavingTime;这在以下两种情况中都是错误的:
如果您特别想知道用户是否为通常支持DST的时区禁用了DST,请执行以下操作:
bool actuallyHasDST = TimeZoneInfo.Local.SupportsDaylightSavingTime;
bool usuallyHasDST = TimeZoneInfo.FindSystemTimeZoneById(TimeZoneInfo.Local.Id)
.SupportsDaylightSavingTime;
bool dstDisabled = usuallyHasDST && !actuallyHasDST;只有当用户专门清除了“自动调整时钟用于夏令时”复选框时,dstDisabled变量才会为真。如果该框不存在,因为该区域一开始不支持DST,那么dstDisabled将为false。
这是怎么工作的?
DynamicDaylightTimeDisabled键被设置为1。否则,它将设置为0。
https://stackoverflow.com/a/9946398/634824专门检查了这个值,这也是一个可接受的解决方案。TimeZoneInfo.Local会考虑到该键中的所有信息。Id查找时区时不考虑注册表中的任何信息,只考虑存储在TimeZoneKeyName值中的Id本身。请注意,TimeZoneInfo.Local的备注部分也很好地描述了这一点。
https://stackoverflow.com/questions/25273281
复制相似问题