Я использую функцию GetUtcoffset()
в TimeZoneInfo
объекте, чтобы получить значение смещения Utc для определенной даты и времени. Как правило, переход на летнее время осуществляется по определенному правилу, например « начинается в первое воскресенье октября и заканчивается в первое воскресенье апреля » (стандартное время AUS по восточному времени), поэтому я доверяю полученному результату. Функция производит.
Но мне интересно, что произойдет с результатом, если переход на летнее время будет отложен или изменен по решению правительства? В прошлом было несколько случаев, когда (австралийское) правительство нарушало правила перехода на летнее время для определенных событий. В этих случаях вызовет ли GetUtcoffset()
неправильный результат или библиотека будет достаточно умной, чтобы «время от времени» получать обновления для летнего времени из какого-то источника в Интернете?
Использование: Я занимаюсь разработкой системы управления парковкой. Одна база данных используется несколькими клиентами, чей часовой пояс различен. Время парковки может быть использовано в качестве доказательства в суде, поэтому очень важно, чтобы мы поняли это правильно. Когда система получит уведомление о том, что автомобиль припаркован, система сгенерирует время прибытия. Учитывая, что уведомление могло поступить с удаленного сайта в другом часовом поясе, я хотел бы знать, могу ли я надежно использовать часовой пояс для тренировки текущей даты на клиентском сайте.
Пример:
string clientTimeZoneId = "AUS Eastern Standard Time";
var utcTime = DateTime.UtcNow;
var clientTimeZone = TimeZoneInfo.FindSystemTimeZoneById(clientTimeZoneId);
var arrivalTime = utcTime.Add(clientTimeZone.GetUtcOffset(utcTime));
Именно здесь функция GetUtcOffset
становится важной. Учитывая, что в 2019–2020 годах переход на летнее время «Восточное стандартное время AUS» завершится 5 апреля 2020 года, вызов GetUtcOffset 6-го числа даст +10: 00: 00. Однако, если по какой-либо причине (например, Олимпийские соревнования), летнее время будет увеличено до 10-го числа, значение arrivalTime
может быть неверным на один час в зависимости от значения GetUtcOffset
.
В настоящее время наш системный администратор должен ежегодно обновлять дату перехода на летнее время в нашей базе данных вручную, но было бы неплохо, если бы этого не делали. Я не знаю точно, что правительство сделало в этих событиях, но они, должно быть, отправили обновления куда-нибудь, иначе у всех компьютеров в затронутом часовом поясе будет неправильное время. Следовательно, возвращаясь к моему первоначальному вопросу, будет ли TimeZoneInfo получать данные из какого-либо «источника DST»?