none
.net程序取时区问题 - 让修改后的时区生效? RRS feed

  • 问题

  • 问题:通过.net程序修改当前时区(调用WinAPI:SetTimeZoneInformation)后,在不重启程序的情况下,修改后的时区未更新到该程序的.net环境。

    现象就是:通过程序取得的System.TimeZone.CurrentTimeZone  System.DateTime.Now.ToLocalTime() 都是修改时区前的结果。重启程序后取得的时区才生效。

    我希望:修改后,不重启程序,就能让程序的时区信息更新(取System.TimeZone.CurrentTimeZone,System.DateTime.Now.ToLocalTime()  为修改后的时区)。

    附注: FX版本为 2.0 , 语言C# 

     

    望解答。谢谢!

    2010年6月11日 8:27

答案

全部回复

  • 你好!

        通过操作注册表来实现,具体可以参考:

    http://gamix.cnblogs.com/archive/2005/12/23/303559.html

        希望对你有帮助!


    周雪峰
    2010年6月11日 12:37
    版主
  • 谢谢!  这篇文章确实很有用,但不能解决我的问题:(

     

    之前没描述得太清楚,重新描述——“通过程序修改当前时区(调用WinAPI:SetTimeZoneInformation)后,在不重启程序的情况下,让修改后的时区更新到.net环境(即,通过程序取得的System.TimeZone.CurrentTimeZone 为修改后的时区,且 System.DateTime.Now.ToLocalTime() 的结果也是时区修改后的效果 )。

     

     

    2010年6月12日 8:06
  • 你好!

    这似乎做不到,我估计原因是这个属性和方法是用的是CLR加载的时候的系统信息!

          所以,这个我们控制不了,你看看能否修改一下你的设计方案!


    周雪峰
    2010年6月12日 14:16
    版主
  • 搞定了。

    用反射调用 System.TimeZone 类的  ResetTimeZone 方法...

    2010年6月12日 14:41