- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我遇到了一个似乎无法解决的奇怪问题。当我在我的 Win 7 x64 机器上调用 TimeZoneInfo.GetSystemTimeZones
时,我得到了 101 个结果。当我对其中的每一个调用 TimeZoneInfo.FindSystemTimeZoneById
并传递 TimeZoneInfo 对象的 StandardName 属性时,其中 3 个抛出 TimeZoneNotFoundException。
这是一个示例:
var tzs = TimeZoneInfo.GetSystemTimeZones();
foreach (var timeZoneInfo in tzs.OrderBy(t => t.BaseUtcOffset))
{
try
{
TimeZoneInfo.FindSystemTimeZoneById(timeZoneInfo.StandardName);
}
catch (TimeZoneNotFoundException)
{
Console.WriteLine(timeZoneInfo.DisplayName + "|" + timeZoneInfo.StandardName + "|" + timeZoneInfo.BaseUtcOffset);
}
}
Console.ReadLine();
这很难找到“协调世界时”、“耶路撒冷标准时间”和“马来半岛标准时间”。以马来西亚为例,当我查看区域设置中的可用时区时,我可以看到它的条目,尽管它显示的是 DisplayName 属性而不是 StandardName:
但是,在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones 浏览注册表时,我在任何一个名称下都看不到它
这是怎么回事?为什么不能按名称加载马来西亚时区?
请不要使用其他库来实现替代时区 - 我现在只想深入了解这个问题。谢谢!
最佳答案
TimeZoneInfo.FindSystemTimeZoneById
方法接受时区 ID 作为参数。您正在使用 timeZoneInfo.StandardName
。
看来,对于这 3 个区域,TimeZoneInfo.StandardName
的值和 TimeZoneInfo.Id
属性不同。使用这个:
TimeZoneInfo.FindSystemTimeZoneById(timeZoneInfo.Id);
将解决问题。
关于c# - 为什么 FindSystemTimeZoneById 找不到 GetSystemTimeZones 返回的某些时区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9225701/
我想使用 TimeZoneInfo.FindSystemTimeZoneById(String)方法,但我不知道要使用什么值作为输入? 在哪里可以获得 FindSystemTimeZoneById 所
我查看了 System.TimeZoneInfo 的 API 文档,它说有一个名为 FindSystemTimeZoneById 的方法,它采用单个字符串参数。 但是,当我尝试在我的 Xamarin
我一直在使用 DateTime 和 TimeZoneInfo 类,我使用以下代码遇到了一个有趣的结果: var dstStart = new DateTime(2013, 3, 10, 2, 0, 0
我遇到了一个似乎无法解决的奇怪问题。当我在我的 Win 7 x64 机器上调用 TimeZoneInfo.GetSystemTimeZones 时,我得到了 101 个结果。当我对其中的每一个调用 T
如果我在 C# 控制台应用程序中执行这段代码,它工作正常。 TimeZoneInfo easternZone = TimeZoneInfo.FindSystemTimeZoneById("Easter
我希望 TimeZoneInfo.GetSystemTimeZones().Single(x => x.Id == anId) 总是给出相同的结果 TimeZoneInfo.FindSystemTim
我是一名优秀的程序员,十分优秀!