这是我使用的代码:
TimeZone zone = TimeZone.CurrentTimeZone;
TimeSpan offset = zone.GetUtcOffset(DateTime.Now);
我的时区为+3,偏移量最初为3小时,很好。但是,当我通过Windows 7控制面板将时区更改为+6时,偏移量仍为3.我不明白为什么。
答案 0 :(得分:2)
TimeZone.CurrentTimeZone
读取延迟初始化的静态字段,在首次访问时分配,如果更改系统设置,则不会销毁/重新创建。从反汇编的源代码:
public static TimeZone CurrentTimeZone {
get {
if (currentTimeZone != null)
return currentTimeZone;
lock (InternalSyncObject) {
if (TimeZone.currentTimeZone == null)
TimeZone.currentTimeZone = new CurrentSystemTimeZone();
return TimeZone.currentTimeZone;
}
}
}
To" reset"它你必须自己卸载AppDomain或处理该事件并调用TimeZoneInfo.ClearCachedData()
方法(tnx tesicg,我原来的建议是下面的删除代码)。
您的服务器会跨时区移动吗?如果没有,那么不要担心 ...