TimeZoneInfo.DisplayName返回incorect值[UWP]

时间:2018-01-10 16:37:26

标签: c# uwp timezone

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

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

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

  • (UTC-11:00)世界协调时间-11&#34;,
  • (UTC-10:00)阿留申群岛&#34;,
  • (UTC-10:00)夏威夷&#34;,
  • (UTC-09:30)Marquesas Islands&#34;,
  • ...

但如果我设置标志&#34;使用.Net Native工具链编译&#34; ,我会得到:

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

是否有可能通过&#34;使用.Net Native工具链编译&#34; 以某种方式获得预期的行为?

1 个答案:

答案 0 :(得分:0)

感谢您报告此问题。

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

作为一种解决方法,您可以将UTC偏移值与StandardName组合如下:

        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;

            }
        }

感谢。