有什么方法可以从中获取 3 个字符代码
System.TimeZoneInfo.Local
?

例如EDT 而不是东部夏令时等。

最佳答案

不幸的是,据我所知,没有简单的内置方法可以做到这一点。但是,您可以自己组合一些东西。下面是一个例子:

public static class TimeZoneInfoExtensions {

        public static string Abbreviation(this TimeZoneInfo Source) {

        var Map = new Dictionary<string, string>()
        {
            {"eastern standard time","est"},
            {"mountain standard time","mst"},
            {"central standard time","cst"},
            {"pacific standard time","pst"}
            //etc...
        };

        return Map[Source.Id.ToLower()].ToUpper();

    }

}

使用方法如下:
string CurrentTimeZoneAbbreviation = System.TimeZoneInfo.Local.Abbreviation();

如果您需要更多转换,您可以将它们插入 Map 字典。

TimeZoneInfo.Id 将是与 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Time Zones] 中的给定键匹配的字符串。如果您可以在线找到匹配的数据库,其中包含相同的 Id 和缩写,则可以快速提取和导入对(例如,使用正则表达式)并将它们放入 Map 字典中。

关于c# - 如何获取 TimeZoneInfo 短名称,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1402544/

10-13 08:00