嗯,这很奇怪,但我创建了简单的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;
}
}
谢谢。