我想知道System.TimeZoneInfo
是本地用户还是系统范围的设置?我一直在修改我的本地时区作为我登录的用户,但是作为记录时区的系统在后台运行的服务似乎不断记录旧的时区。如果TimeZoneInfo是每个用户,那么有没有办法可以查找所有用户的时区列表?
答案 0 :(得分:1)
TimeZone是系统范围的,它不是用户范围的设置。但问题是.NET缓存当前时区以重置缓存:
System.Globalization.CultureInfo.CurrentCulture.ClearCachedData();
答案 1 :(得分:1)
我认为你真的在谈论TimeZoneInfo.Local
?我相信这是一个系统范围的设置但是它是基于每个进程缓存的。您可以调用TimeZoneInfo.ClearCachedData()
强制刷新 - 虽然显然您必须知道这样做:)如果您正在运行需要了解更改的后台任务,您可以随时调用一次5分钟......如果你可以忍受长达5分钟的陈旧情况,我认为这不会是一次巨大的性能打击。
(我觉得奇怪的是,更改系统时区似乎不需要特权访问 - 至少在Windows 7中 - 但是嘿......)
答案 2 :(得分:1)
时区是系统设置。 (HKEY_LOCAL_MACHINE \ SYSTEM \ CURRENTCONTROLSET \控制\ TimeZoneInformation)。