Almacenamiento de fecha / hora como UTC en la base de datos

Estoy almacenando fechas / horas en la base de datos como UTC y las calculo dentro de mi aplicación a la hora local en función de la zona horaria específica. Digamos, por ejemplo, que tengo la siguiente fecha / hora:

01/04/2010 00:00

Digamos que es para un país, p. Reino Unido que observa DST (horario de verano) y en este momento en particular estamos en horario de verano. Cuando convierto esta fecha a UTC y la almaceno en la base de datos, en realidad se almacena como:

31/03/2010 23:00

Como la fecha se ajustaría -1 horas para el horario de verano. Esto funciona bien cuando observa DST en el momento de la presentación. Sin embargo, ¿qué sucede cuando el reloj se vuelve a ajustar? Cuando saco esa fecha de la base de datos y la convierto a la hora local, esa fecha y hora en particular se vería como31/03/2009 23:00 cuando en realidad se procesó como01/04/2010 00:00.

Corríjame si me equivoco, pero ¿no es esto un defecto cuando se almacenan los tiempos como UTC?

Ejemplo de conversión de zona horaria

Básicamente, lo que estoy haciendo es almacenar la fecha / hora de cuando la información se envía a mi sistema para permitir a los usuarios hacer undistancia reporte. Así es como estoy almacenando la fecha / hora:

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

Almacenamiento como UTC:

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

Respuestas a la pregunta(6)

Su respuesta a la pregunta