我正在使用以下代码来获取“海湾标准时间”的时区详细信息,但其抛出错误如下
在本地计算机上找不到时区ID“海湾标准时间”。
下面是我正在使用的代码行
TimeZoneInfo tZone = TimeZoneInfo.FindSystemTimeZoneById("Gulf Standard Time");
您能告诉我我检查过的代码及其正确的时区名称究竟是什么问题。
答案 0 :(得分:1)
如评论中所指出,"Gulf Standard Time"
不是有效的Windows时区标识符。
海湾标准时间通常是指UTC + 04:00,没有DST,如在阿拉伯联合酋长国和阿曼as described here中所观察到的。 Windows中相应的时区以英语显示名称(UTC+04:00) Abu Dhabi, Muscat
出现,并具有相应的ID Arabian Standard Time
。
因此在.NET中:
TimeZoneInfo tZone = TimeZoneInfo.FindSystemTimeZoneById("Arabian Standard Time");
Console.WriteLine(tzone.DisplayName);
// prints: (UTC+04:00) Abu Dhabi, Muscat
要获取支持的时区列表,请在您的.NET代码中使用TimeZoneInfo.GetSystemTimeZones()
,然后检查Id
和DisplayName
属性。或者,您可以在命令行上调用TZUTIL /L
来列出它们。
此外,仅指出所有这些都假设您正在Windows上运行。如果您实际上是在非Windows系统(Linux,OSX等)上运行.NET Core,则应使用IANA时区ID。在这种情况下,"Asia/Dubai"
或"Asia/Muscat"
都是合适的。
如果您的代码可以同时在Windows和非Windows系统上运行,那么您将需要利用我的TimeZoneConverter库。