Они вообще существуют? Мне действительно надоело отображать" Стандартное романтическое время " моим европейским пользователям и пытаюсь объяснить, почему их «центральноевропейское время» не может отображаться как «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;
}