有什么方法可以从中获取 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/