Почему метка времени моего приложения-функции Azure на час меньше - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть приложение-функция Azure, которое запускается каждые пять минут.В документе есть поле Timestamp с использованием

DateTime.Now

Я живу в Великобритании, которая в настоящее время является британским летним временем 26-09-18, что на 1 час больше, чем по Гринвичу.Мой центр обработки данных Azure расположен на юге Великобритании.Отметка времени неверна на один час.Например, 20:01 хранится в документе как 19:01.Как я могу это исправить?

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Вы можете обработать это в коде, для Великобритании вы можете использовать следующее, которое должно автоматически настраиваться для перехода на летнее время.

TimeZoneInfo ukTimeZone = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");

DateTime utcDate = new DateTime(2019, 1, 1, 0, 0, 0, DateTimeKind.Utc);
DateTime ukTime = TimeZoneInfo.ConvertTimeFromUtc(utcDate, ukTimeZone);
Console.WriteLine(utcDate == ukTime);

1 января значение ukTime должно бытьравен UTC, поскольку часовой пояс, используемый в Великобритании в это время года, является GMT часовым поясом, равным UTC.

GMT


1 июня время в Великобритании должно быть на час впереди UTC, так как Великобритания будет переключать часовой пояс BST в это время года.

utcDate = new DateTime(2019, 6, 1, 0, 0, 0, DateTimeKind.Utc);
ukTime = TimeZoneInfo.ConvertTimeFromUtc(utcDate, ukTimeZone);
Console.WriteLine(utcDate == ukTime.AddHours(-1));

BST

0 голосов
/ 26 сентября 2018

Идея бессерверного кода состоит в том, чтобы абстрагироваться от того, где физически работает ваш код.Из-за этого функции Azure по умолчанию используют время UTC.Вы можете установить местный часовой пояс, добавив WEBSITE_TIME_ZONE в качестве местного времени в качестве настройки приложения.См. Можно ли установить определенный часовой пояс для приложения функций Azure? .

...