Сохранение даты / времени в формате UTC в базе данных

Я храню дату / время в базе данных как UTC и вычисляю их в своем приложении обратно к местному времени на основе определенного часового пояса. Скажем, например, у меня есть следующая дата / время:

01/04/2010 00:00

Скажем, это для страны, например Великобритания, которая соблюдает летнее время (DST) и в настоящее время мы находимся в летнее время. Когда я конвертирую эту дату в UTC и сохраняю ее в базе данных, она фактически сохраняется как:

31/03/2010 23:00

В качестве даты будет скорректирована -1 час по DST. Это прекрасно работает, когда вы наблюдаете летнее время во время подачи. Однако что происходит, когда часы отрегулированы обратно? Когда я извлекаю эту дату из базы данных и конвертирую ее в местное время, эта конкретная дата-время будет выглядеть как31/03/2009 23:00 когда на самом деле это было обработано как01/04/2010 00:00.

Поправьте меня, если я ошибаюсь, но не является ли это недостатком при сохранении времени в формате UTC?

Пример преобразования часового пояса

По сути, я храню дату / время отправки информации в мою систему, чтобы пользователи моглиспектр отчет. Вот как я храню дату / время:

public DateTime LocalDateTime(string timeZoneId)
{
    var tzi = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId);
    return TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, tzi).ToUniversalTime().ToLocalTime(); 
}

Хранение как UTC:

var localDateTime = LocalDateTime("AUS Eastern Standard Time");
WriteToDB(localDateTime.ToUniversalTime());

Ответы на вопрос(6)

Ваш ответ на вопрос