Básicamente estoy convirtiendo las fechas locales almacenadas en la base de datos en UTC. Pero he leído en algún lado que las reglas de ahorro de luz diurna han cambiado en 2007. Por lo tanto, la función Date.ToUniversalTime() todavía funciona correctamente. Básicamente, las fechas anteriores a 2007 (cuando las nuevas reglas entraron en vigor) se convertirían correctamente, pero las fechas posteriores no lo serían. ¿Estoy aquí? ¿O .Net se encargaría de la conversión internamente, es decir, dependiendo de las diferentes reglas de horario de verano?Cambios en el horario de verano que afectan la conversión UTC
EDITAR: Las fechas se almacenan en DB como hora local. Lo estoy convirtiendo en UTC. Por lo tanto, una fecha como '9 de marzo de 2005' debe convertirse utilizando las reglas de luz diurna de 2005 en lugar de las reglas de hoy. Las reglas cambiaron en los Estados Unidos en 2007. Por lo tanto, la fecha sale mal en una hora.
¿Cómo podría funcionar esto? TimeZoneInfo necesitaría saber cuándo se agregó el valor a la base de datos para saber qué reglas aplicar –
Windows comenzó a admitir un rico modelo de zona horaria (con cambios históricos) hace relativamente poco tiempo, posiblemente con 2K3 o incluso Vista y paquetes de servicios para usuarios mayores. Sistemas operativos. El soporte de .NET se usa para seguir el modelo anterior (un conjunto de reglas, aplicadas perpetuamente). TimeZoneInfo sigue el nuevo modelo. –
Sí, pero supongo que tengo esta fecha en el archivo db: "2005-03-10 03:30" (expresada en "hora local") ¿Cómo TimeZoneInfo puede convertir esta fecha a hora UTC sin saber qué reglas del horario de verano se usaron para guardarla en ¿El primer lugar? –