我想要一个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/