Произошло ли изменение часового пояса для ToLocalTime - PullRequest
0 голосов
/ 30 марта 2020

В настоящее время я использую ToLocalTime для преобразования даты UT C, полученной от моего бэкэнда. Есть ли способ настроить мой ASP. NET Core 3.0 веб-сайт для использования определенного c часового пояса при вызове ToLocalTime (вместо зависимости от региона хоста) - или я должен реализовать свой собственный метод / расширение для перевод в нужное мне время?

1 Ответ

2 голосов
/ 30 марта 2020

Официальная документация DateTime.ToLocalTime гласит:

Обратите внимание, что точный вывод зависит от текущей культуры и местного часового пояса системы, в которой он запущен.

Вы можете использовать TimeZoneInfo stati c метод ConvertTimeFromUt c для преобразования экземпляра DateTime (Примечание: если это Kind свойство Local вы получите исключение!) из Ut c в любое местное время, которое вы хотите (еще одно замечание: свойство Kind результата будет Utc или Unspecified - в зависимости от target TimeZoneInfo).

Пример кода (скопировано со страницы документации):

DateTime timeUtc = DateTime.UtcNow;
try
{
   TimeZoneInfo cstZone = TimeZoneInfo.FindSystemTimeZoneById("Central Standard Time");
   DateTime cstTime = TimeZoneInfo.ConvertTimeFromUtc(timeUtc, cstZone);
   Console.WriteLine("The date and time are {0} {1}.", 
                     cstTime, 
                     cstZone.IsDaylightSavingTime(cstTime) ?
                             cstZone.DaylightName : cstZone.StandardName);
}
catch (TimeZoneNotFoundException)
{
   Console.WriteLine("The registry does not define the Central Standard Time zone.");
}                           
catch (InvalidTimeZoneException)
{
   Console.WriteLine("Registry data on the Central Standard Time zone has been corrupted.");
}
...