【问题标题】:How to clear TimeZoneInfo cache in WinRT?如何清除 WinRT 中的 TimeZoneInfo 缓存?
【发布时间】:2016-03-21 21:13:51
【问题描述】:

在.NET中TimeZoneInfo使用的一些值被缓存了,比如TimeZoneInfo.Local、DateTime.ToLocalTime使用的当前时区等。在传统的.NET框架应用中,这个缓存可以通过调用@来清除987654325@,如explained in the docs。

但是,在 WinRT 应用程序(例如 Windows 应用商店应用程序和 Windows 通用应用程序)中,ClearCachedData API 不可用。

WinRT环境下如何清除时区缓存?

【问题讨论】:

  • 注意,我发布这个是为了其他人的利益。我有答案,如下所示。

标签: .net windows-runtime timezone uwp


【解决方案1】:

有一种未记录的方法可以实现这一点,as seen here in the .NET reference source。

TimeZoneInfo.ConvertTime(new DateTime(0), TimeZoneInfo.Utc);

这将清除时区缓存,它适用于 WinRT 以及传统的 .NET Framework (4.6+)、.NET Core 和 PCL。

据我在 Microsoft .NET 团队的同事所说,这是针对已知问题的非官方解决方法。它预计不会被删除,但它是一个实现细节,而不是公共 API 的一部分,因此使用风险自负。

请注意,如果可用,应使用TimeZoneInfo.ClearCachedData 代替此方法。它已添加到 .NET Standard 2.0 和 UWP 10.1 (see all environments here)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-24
    • 2012-01-31
    • 2017-02-20
    • 2019-09-18
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多