Как можно время на сервере сделать локальным?

206
07 февраля 2018, 10:09

Раньше у меня хостинг бы в Москве, в моей временной зоне, и сайт работал как ожидалось. Сейчас переезжаем на новый хостинг (SmarterAsp, Shared) у которого время смещено на несколько часов.

Можно ли как-то настроить DateTime.Now что бы возвращал Московское время, или надо переписывать код?

Если переписывать, то думаю что пройдусь заменой по DateTime.Now -> DateTime.LocalNow , где LocalNow будет мой extension. Как тогда лучше организовать работу этой функции?

Вот мой код, прошу проверить правильность работы

var tz = TimeZoneInfo.FindSystemTimeZoneById("Moscow Standard Time");
TimeZoneInfo.ConvertTime(DateTime.Now, tz);

для ускорения tz вынесу в статическую константу.

Правильно ли я понимаю что TimeZoneInfo.ConvertTime приводит местное локальное время в любую Time зону? Отчего вопрос. Потому что мне непонятно из какой зоны эта функция работает, ведь при конвертации зоны нужно знать зону A (откуда конвертировать) и B (куда конвертировать) и тогда сделать расчёт. И не очень понимаю как без знания A это сделать, или A это временная зона сервера?

Как вообще на сайтах обычно делают привязку к часовому поясу?

Answer 1

Получаем все временные зоны

foreach (TimeZoneInfo zoneID in TimeZoneInfo.GetSystemTimeZones())
{
    Console.WriteLine(zoneID.Id + "<br/>");
}

Конвертируем время

protected DateTime GetCurrentTime()
{
     DateTime serverTime = DateTime.Now;
     DateTime _localTime = TimeZoneInfo.ConvertTimeBySystemTimeZoneId(serverTime, TimeZoneInfo.Local.Id, "Russian Standard Time");
     return _localTime;
}

Пример взят отсюда: https://www.smarterasp.net/support/kb/a1697/how-to-convert-server-time-zone-to-local-timezone-using-_net.aspx

READ ALSO
Реализация WCF контрактов

Реализация WCF контрактов

ЗдравствуйтеПару дней уже не могу решить проблему

213
Как в ASP.NET Core AngularJS в компонентах работать с sessionStorage?

Как в ASP.NET Core AngularJS в компонентах работать с sessionStorage?

Когда я пытаюсь добавить или прочитать значение в sessionStorage у меня вылезает ошибка "NodeInvocationException: sessionStorage is not defined ReferenceError: sessionStorage is not defined...

264
создание new Random() - утечка памяти?

создание new Random() - утечка памяти?

нужно написать генератор произвольных символов

175
Как привязать две коллекции к одному ItemsControl?

Как привязать две коллекции к одному ItemsControl?

Всем привет! Не могу решить проблему

235