Названия часовых поясов для приложения .NET в LINUX - PullRequest
0 голосов
/ 30 мая 2019

У меня есть приложение ASP.NET CORE. Пока этот код работает в Windows:

 var utcNow = DateTime.UtcNow;
 var currentDateTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(utcNow, "US Eastern Standard Time");

Будет ли это работать при развертывании в кластере Linux Kubernetes - с указанием имени часового пояса с жестким кодом "US Eastern Standard Time"

Или мне нужно настроить другое имя?

Спасибо

Anand

Ответы [ 2 ]

0 голосов
/ 30 мая 2019

Для TimeZoneInfo он имеет разные идентификаторы для Windows и Linux, вы можете проверить эту проблему TimeZoneInfo должен иметь согласованные идентификаторы для Windows и Linux # 2538 .

Для возможного обходного пути, вы можете попробовать TimeZoneConverter как

    var utcNow = DateTime.UtcNow;
    TimeZoneInfo tzi = TZConvert.GetTimeZoneInfo("Eastern Standard Time");
    var currentDateTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(utcNow, tzi.Id);
0 голосов
/ 30 мая 2019

Для LINUX используется имя "EST"

    var utcNow = DateTime.UtcNow;
    string estTz = string.Empty;
#if RUN_ON_WINDOWS
    estTz = "US Eastern Standard Time";
#else
    estTz = "EST";
#endif
    var currentDateTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(utcNow, estTz); // nyse tz

Если вам интересно, у нас есть RUN_ON_WINDOWS в .csproj, который процесс сборки TeamCity для развертывания LINUX или WINDOWS перезаписывает соответствующим образом. <ItemGroup Condition="'$(RunOnWindows)'=='true'">

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...