获取时区标准名称(非本地)

Get a Time Zone StandardName (Not Local)

首先我会说我在 C# 方面经验不足,我正在编写一个 Windows 表单应用程序 写入 XML 文件,PowerShell 稍后可以在配置期间的不同点从中读取元素。

我创建了一个枚举时区显示名称的组合框,效果很好。

ReadOnlyCollection<TimeZoneInfo> systemTimeZones;
systemTimeZones = TimeZoneInfo.GetSystemTimeZones();
cbTimeZone.DataSource = systemTimeZones;
cbTimeZone.BindingContext = new BindingContext();

我正在尝试获取 ComboBox 中所选 DisplayName 时区的 StandardName。我找到了 TimeZoneInfo.Local.StandardName 但这不是我要找的,因为我不关心当前的系统信息。我想为 ComboBox 使用 SelectedIndexChanged 事件以在标签中显示 StandardName。似乎必须有一个简单的方法,我刚刚错过了过去 2 天的阅读。

使用 TimeZoneInfo class 例如

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
        foreach (var zone in TimeZoneInfo.GetSystemTimeZones())
        {
            cbTimeZones.Items.Add(zone.DisplayName);
        }
    }

    private void cbTimeZones_SelectedIndexChanged(object sender, EventArgs e)
    {
        var zone = TimeZoneInfo.GetSystemTimeZones().Single(x => x.DisplayName == ((ComboBox)sender).SelectedItem.ToString());
        lblTimeZone.Text = TimeZoneInfo.FindSystemTimeZoneById(zone.Id).StandardName;
    }
}