Как указано в комментариях, "Gulf Standard Time"
не является действительным идентификатором часового пояса Windows.
Стандартное время залива обычно относится к UTC + 04: 00 без перехода на летнее время, как это наблюдается в Объединенных Арабских Эмиратах.и Оман, , как описано здесь .Соответствующий часовой пояс в Windows отображается с английским отображаемым именем (UTC+04:00) Abu Dhabi, Muscat
и имеет соответствующий идентификатор Arabian Standard Time
.
. Таким образом, в .NET:
TimeZoneInfo tZone = TimeZoneInfo.FindSystemTimeZoneById("Arabian Standard Time");
Console.WriteLine(tzone.DisplayName);
// prints: (UTC+04:00) Abu Dhabi, Muscat
Чтобы получитьсписок поддерживаемых часовых поясов, используйте TimeZoneInfo.GetSystemTimeZones()
в своем коде .NET и проверьте свойства Id
и DisplayName
.Кроме того, вы можете вызвать TZUTIL /L
в командной строке, чтобы вывести их список.
Кроме того, просто чтобы указать, что все это предполагает, что вы работаете в Windows.Если вы на самом деле используете .NET Core в системах, отличных от Windows (Linux, OSX и т. Д.), Вам следует использовать идентификаторы часовых поясов IANA.В этом случае подойдет либо "Asia/Dubai"
, либо "Asia/Muscat"
.
И если ваш код может работать как в системах Windows, так и в системах, отличных от Windows, вам необходимо воспользоваться преимуществами моего TimeZoneConverter библиотека.