c# – TimeZoneInfo.DisplayName返回incorect值[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 Native工具链编译”获得预期的行为?

解决方法:

感谢您报告此问题.

似乎在启用.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;

            }
        }

谢谢.

上一篇:如何使用C#在UWP中创建ItemsWrapGrid?


下一篇:c# – 后台任务UWP Windows 10中的Websockets