在.NET中,TimeZoneInfo使用的一些值被缓存,例如TimeZoneInfo.Local,DateTime.ToLocalTime等使用的当前时区.在传统的.NET框架应用程序中,可以通过调用TimeZoneInfo.ClearCachedData()来清除此缓存,如
explained in the docs.
但是,在WinStT应用程序(如Windows应用商店应用程序和Windows Universal Apps)中,ClearCachedData API不可用.
如何清除WinRT环境中的时区缓存?
有一种无证的方法来实现这一点,as seen here in the .NET reference source.
TimeZoneInfo.ConvertTime(new DateTime(0),TimeZoneInfo.Utc);
这将清除时区缓存,它可以在WinRT以及传统的.NET Framework(4.6),.NET Core和PCL中运行.
据微软.NET团队的同事们说,这是针对已知问题的非正式解决方法.它不会被删除,但它是一个实现细节,而不是公共API的一部分,因此使用风险自负.
请注意,当TimeZoneInfo.ClearCachedData可用时,应该使用TimeZoneInfo.ClearCachedData而不是此方法.它被添加到.NET Standard 2.0和UWP 10.1(see all environments here)中.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。