C# 仅选择美国时区

C# 仅选择美国时区,c#,timezone,C#,Timezone,有没有一种简单的方法可以只列出美国的时区?我正在使用这个代码,但它会生成每个时区,我只想要太平洋、中部、山区和东部 public List<TimeZoneInfo> _timeZones = TimeZoneInfo.GetSystemTimeZones().ToList(); public List\u timeZones=TimeZoneInfo.GetSystemTimeZones().ToList(); 您可以完全按照您描述的标准,按ID筛选它们: using Syste

有没有一种简单的方法可以只列出美国的时区?我正在使用这个代码,但它会生成每个时区,我只想要太平洋、中部、山区和东部

public List<TimeZoneInfo> _timeZones = TimeZoneInfo.GetSystemTimeZones().ToList();
public List\u timeZones=TimeZoneInfo.GetSystemTimeZones().ToList();
您可以完全按照您描述的标准,按ID筛选它们:

using System;
using System.Linq;

class Test
{
    static void Main()
    {
        var inclusions = new[] { "Pacific", "Central", "Mountain", "Eastern" };
        foreach (var zone in TimeZoneInfo.GetSystemTimeZones()
                      .Where(zone => inclusions.Any(x => zone.Id.Contains(x))))
        {
            Console.WriteLine(zone.Id);
        }
    }
}
但是,这将得到以下列表:

Pacific Standard Time (Mexico)
Pacific Standard Time
US Mountain Standard Time
Mountain Standard Time (Mexico)
Mountain Standard Time
Central America Standard Time
Central Standard Time
Central Standard Time (Mexico)
Canada Central Standard Time
SA Pacific Standard Time
Eastern Standard Time
US Eastern Standard Time
Central Brazilian Standard Time
Pacific SA Standard Time
SA Eastern Standard Time
Central Europe Standard Time
Central European Standard Time
W. Central Africa Standard Time
Central Asia Standard Time
N. Central Asia Standard Time
AUS Central Standard Time
AUS Eastern Standard Time
West Pacific Standard Time
Central Pacific Standard Time
。。。这显然不是你想要的

如果您只需要一组特定的时区,您可能最好使用硬编码您想要的时区的ID。

这是怎么回事

var _timeZones = TimeZoneInfo.GetSystemTimeZones().ToList().Where(zone=>zone.DisplayName.Contains("US"));

用消防水龙带喝水没什么意义。只需明确询问您想要的:

        var zones = new List<TimeZoneInfo> {
            TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"),
            TimeZoneInfo.FindSystemTimeZoneById("Mountain Standard Time"),
            TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"),
            TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time")
        };
var区域=新列表{
TimeZoneInfo.FindSystemTimeZoneById(“太平洋标准时间”),
TimeZoneInfo.FindSystemTimeZoneById(“山区标准时间”),
TimeZoneInfo.FindSystemTimeZoneById(“中央标准时间”),
TimeZoneInfo.FindSystemTimeZoneById(“东部标准时间”)
};

别忘了夏威夷和阿拉斯加:)

我创建了一个美国时区列表:

   var zones = new List<TimeZoneInfo> {
    TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"),
    TimeZoneInfo.FindSystemTimeZoneById("Mountain Standard Time"),
    TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"),
    TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"),
    TimeZoneInfo.FindSystemTimeZoneById("US Eastern Standard Time"),
    TimeZoneInfo.FindSystemTimeZoneById("US Mountain Standard Time"),            
    TimeZoneInfo.FindSystemTimeZoneById("Hawaiian Standard Time"),
    TimeZoneInfo.FindSystemTimeZoneById("Alaskan Standard Time"),
};
var区域=新列表{
TimeZoneInfo.FindSystemTimeZoneById(“太平洋标准时间”),
TimeZoneInfo.FindSystemTimeZoneById(“山区标准时间”),
TimeZoneInfo.FindSystemTimeZoneById(“中央标准时间”),
TimeZoneInfo.FindSystemTimeZoneById(“东部标准时间”),
TimeZoneInfo.FindSystemTimeZoneById(“美国东部标准时间”),
TimeZoneInfo.FindSystemTimeZoneById(“美国山区标准时间”),
TimeZoneInfo.FindSystemTimeZoneById(“夏威夷标准时间”),
TimeZoneInfo.FindSystemTimeZoneById(“阿拉斯加标准时间”),
};

我认为这是美国时区的更新列表:

var timezones = new List<TimeZoneInfo> {
    TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time"),
    TimeZoneInfo.FindSystemTimeZoneById("Mountain Standard Time"),
    TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time"),
    TimeZoneInfo.FindSystemTimeZoneById("Eastern Standard Time"),
    TimeZoneInfo.FindSystemTimeZoneById("US Eastern Standard Time"),
    TimeZoneInfo.FindSystemTimeZoneById("US Mountain Standard Time"),            
    TimeZoneInfo.FindSystemTimeZoneById("Hawaiian Standard Time"),
    TimeZoneInfo.FindSystemTimeZoneById("Alaskan Standard Time"),
    TimeZoneInfo.FindSystemTimeZoneById("Pacific Standard Time (Mexico)"),
    TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time (Mexico)"),
    TimeZoneInfo.FindSystemTimeZoneById("UTC")
};
var时区=新列表{
TimeZoneInfo.FindSystemTimeZoneById(“太平洋标准时间”),
TimeZoneInfo.FindSystemTimeZoneById(“山区标准时间”),
TimeZoneInfo.FindSystemTimeZoneById(“中央标准时间”),
TimeZoneInfo.FindSystemTimeZoneById(“东部标准时间”),
TimeZoneInfo.FindSystemTimeZoneById(“美国东部标准时间”),
TimeZoneInfo.FindSystemTimeZoneById(“美国山区标准时间”),
TimeZoneInfo.FindSystemTimeZoneById(“夏威夷标准时间”),
TimeZoneInfo.FindSystemTimeZoneById(“阿拉斯加标准时间”),
TimeZoneInfo.FindSystemTimeZoneById(“太平洋标准时间(墨西哥)”),
TimeZoneInfo.FindSystemTimeZoneById(“中央标准时间(墨西哥)”,
TimeZoneInfo.FindSystemTimeZoneById(“UTC”)
};

因此,添加一个
。其中
并列出您想要的时区。您是在问如何在列表中添加4个项目吗?或者你想用一些奇特的LINQ查询来实现这一点?你会想念我们在DisplayName中没有我们的区域,但仍然是美国时区