Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 对于相同的时区,Windows 10具有不同的显示名_C#_.net_Windows_Uwp - Fatal编程技术网

C# 对于相同的时区,Windows 10具有不同的显示名

C# 对于相同的时区,Windows 10具有不同的显示名,c#,.net,windows,uwp,C#,.net,Windows,Uwp,在.net UWP应用程序(仅Win 10)中,我通过迭代通用的TimeZoneInfo.GetSystemTimezones()列表来显示时区的displayname。例如,在我的Windows 10计算机上,我将看到: (UTC+08:00)Perth 作为显示名 但是,在其他几台计算机上(相同的Windows版本、相同的构建、不同的Windows安装语言),我将看到: Perth 虽然我完全知道时区反映了可用的本地系统时区,但我无法理解为什么同一时区对象的Displayname属性不同

在.net UWP应用程序(仅Win 10)中,我通过迭代通用的
TimeZoneInfo.GetSystemTimezones()
列表来显示时区的
displayname
。例如,在我的Windows 10计算机上,我将看到:

(UTC+08:00)Perth
作为显示名

但是,在其他几台计算机上(相同的Windows版本、相同的构建、不同的Windows安装语言),我将看到:

Perth
虽然我完全知道时区反映了可用的本地系统时区,但我无法理解为什么同一时区对象的Displayname属性不同

委员会:

显示名称基于Windows操作系统安装的区域性进行本地化

这对我来说也很酷,但是文化是否也删除了UTC偏移

更新:


下面是一个示例(在Surface Pro 4、1703、15063.413上)

这些是显示名称,仅用于向用户呈现人类可读的表示。
TimeZoneInfo
对象仍然存储正确的时区偏移量。我测试了两台安装了不同语言的设备,UTC偏移量仍然存在,并且仅显示名为localized的设备。那么这个API在什么设备上会像你说的那样丢失时区的基本偏移量呢?@IInspectable我必须向user@FikLi时区一直在变化。俄罗斯在过去5年中至少改变了三次时区。委内瑞拉去年才改变了自己的立场。您不能依赖于显示名称。事实上,如果你真的关心时区,就不要使用Windows时区名称。事实上的标准是IANA的时区数据库(tzdb)。使用像NodaTime这样的库,它包括tzdb,并在任何时候都保持最新changes@FikLi至于本地化的显示名称,则为该名称和一个资源dll。有人甚至可以手动更改此项,或者它可以更改下一个时区的更改,并通过Windows更新更新列表。在不显示偏移量的计算机上选中
Computer\HKEY\u LOCAL\u MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\timezones