TimeZoneInfo.DisplayName 返回不连续的值 [UWP]



嗯,这很奇怪,但我创建了简单的UWP项目并在代码中添加了简单的行:

IEnumerable<string> TimeZones = TimeZoneInfo.GetSystemTimeZones().Select(_ => _.DisplayName);

当我执行程序时,我得到了预期的结果:

  • (UTC-11:00( 协调世界时-11",
  • (UTC-10:00( 阿留申群岛",
  • (UTC-10:00( 夏威夷",
  • (UTC-09:30( 马克萨斯群岛",

但是,如果我设置标志"使用 .Net Native 工具链编译">,我将得到:

  • UTC-11
  • 阿留申标准时间
  • 夏威夷标准时间
  • 马克萨斯标准时间

是否有可能以某种方式获得"使用 .Net 本机工具链编译">的预期行为?

感谢您报告此问题。

似乎在启用 .Net 本机工具链时,DisplayName 属性将返回与 StandardName 属性相同的值。我已经在我们的系统中记录了这个问题。

作为解决方法,您可以将 UTC 偏移量值与标准名称组合在一起,如下所示:

        var TimeZoneList=TimeZoneInfo.GetSystemTimeZones();
        foreach(var i in TimeZoneList)
        {
            TimeSpan ts = i.GetUtcOffset(DateTime.Now);
            if (ts.ToString().Contains("-"))
            {
                string s = "(UTC" + ts.ToString() + ")" + i.StandardName;
            }
            else
            {
                string s = "(UTC+" + ts.ToString() + ")" + i.StandardName;
            }
        }

谢谢。

相关内容

  • 没有找到相关文章

最新更新