Раньше у меня хостинг бы в Москве, в моей временной зоне, и сайт работал как ожидалось. Сейчас переезжаем на новый хостинг (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 это временная зона сервера?
Как вообще на сайтах обычно делают привязку к часовому поясу?
Получаем все временные зоны
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
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Когда я пытаюсь добавить или прочитать значение в sessionStorage у меня вылезает ошибка "NodeInvocationException: sessionStorage is not defined ReferenceError: sessionStorage is not defined...