我想要一个Windows机器上所有可用时区的列表。如何在.NET中做到这一点?

我知道TimeZoneInfo.GetSystemTimeZones方法,但这仅返回当前选择的时区。

DateTimeOffset current = DateTimeOffset.Now;
ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones();
Console.WriteLine("You might be in the following time zones:");
foreach (TimeZoneInfo timeZoneInfo in timeZones)
{
   // Compare offset with offset for that date in that time zone
   if (timeZoneInfo.GetUtcOffset(current).Equals(current.Offset))
   {
        Console.WriteLine("   {0}", timeZoneInfo.DisplayName);
   }
}

最佳答案

不,不是,它会返回Windows计算机知道的每个时区(在我的安装中为91)。您拥有的if语句限制了您的输出。删除它,但保留Console.WriteLine部分,您将看到所有91个(左右)时区。

例如

ReadOnlyCollection<TimeZoneInfo> timeZones = TimeZoneInfo.GetSystemTimeZones();

foreach (TimeZoneInfo timeZoneInfo in timeZones)
  Console.WriteLine("{0}", timeZoneInfo.DisplayName);

那应该向您的控制台写出91个时区。

关于timezone - 如何枚举.NET中的所有时区?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/442019/

10-11 17:20