Они вообще существуют? Мне очень надоело показывать «Стандартное романское время» моим европейским пользователям и пытаться объяснить, почему их «Центральноевропейское время» не может отображаться как «CET». Если бы я проанализировал «Стандартное романское время» и подарил им «RST», это было бы для них бессмысленным, или, возможно, его спутали бы с «Стандартным временем России» или прочей ерундой.
Нет ли способа вывести общепринятые сокращения из Windows? Мне нужно что-то, что работает в Северной Америке, Южной Америке, Европе, Африке и Азии.
ОБНОВЛЕНИЕ: Я знаю, что это полный взлом, но, скорее всего, он поможет мне в 90% случаев, которые меня волнуют. Если у вас есть предложения, я все еще уши;)
/// <summary>
/// Gets the current time zone abbreviation, corrected for Daylight Saving Time (if applicable)
/// </summary>
/// <param name="timeZoneId">The time zone id.</param>
/// <returns></returns>
public static string GetTZAbbrev(string timeZoneId)
{
var timeZoneInfos = TimeZoneInfo.GetSystemTimeZones();
var abbrev = string.Empty;
foreach (var timeZoneInfo in timeZoneInfos)
{
if (timeZoneInfo.Id != timeZoneId) continue;
string[] words;
if (timeZoneInfo.IsDaylightSavingTime(DateTime.UtcNow))
{
words = timeZoneInfo.DaylightName.Split(' ');
}
else
{
words = timeZoneInfo.StandardName.Split(' ');
}
foreach (var word in words)
{
abbrev += word[0];
}
}
return abbrev;
}