我想有一个Windows机器上所有可用时区的列表.我怎么能在.NET中这样做?
我知道TimeZoneInfo.GetSystemTimeZones方法,但这只返回当前选定的时区
DateTimeOffset current = DateTimeOffset.Now;
ReadOnlyCollection 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);
}
}
Robert C. Ba.. 42
不,它没有,它返回Windows机器知道的每个时区(在我的安装中,那是91).if
你在那里的陈述是限制你的输出.拿出来然后离开Console.WriteLine
部分,你会看到所有91个(左右)时区.
例如
ReadOnlyCollection timeZones = TimeZoneInfo.GetSystemTimeZones();
foreach (TimeZoneInfo timeZoneInfo in timeZones)
Console.WriteLine("{0}", timeZoneInfo.DisplayName);
这应该写出91个时区到你的控制台.
不,它没有,它返回Windows机器知道的每个时区(在我的安装中,那是91).if
你在那里的陈述是限制你的输出.拿出来然后离开Console.WriteLine
部分,你会看到所有91个(左右)时区.
例如
ReadOnlyCollection timeZones = TimeZoneInfo.GetSystemTimeZones();
foreach (TimeZoneInfo timeZoneInfo in timeZones)
Console.WriteLine("{0}", timeZoneInfo.DisplayName);
这应该写出91个时区到你的控制台.