¿C# toma en cuenta el horario de verano cuando se convierte entre zonas horarias?¿TimeZoneInfo toma DST en consideración?
Tengo una fecha de origen que está en la hora actual en Londres, y quiero convertirla a mi zona horaria (CET). Aquí está el código que estoy usando.
DateTime time = DateTime.ParseExact(timeString, "HH:mm", null);
time = DateTime.SpecifyKind(time, DateTimeKind.Unspecified);
//Convert it to the right timezone. It is currently in GMT
TimeZoneInfo gmt = TimeZoneInfo.FindSystemTimeZoneById("GMT Standard Time");
TimeZoneInfo current = TimeZoneInfo.Local;
DateTime utc = TimeZoneInfo.ConvertTimeToUtc(time, gmt);
DateTime local = TimeZoneInfo.ConvertTimeFromUtc(utc, core.startTime = local;
Actualmente funciona bien. Sin embargo, cuando el DST muestre su fea cabeza, ¿continuará funcionando o se romperá horriblemente? Soy un poco cauteloso con TimeZones debido a que tuve muchos problemas en el pasado.
Te das cuenta de que Londres no está en GMT, ¿verdad? Como ahora es verano en el hemisferio norte, Londres está en UTC + 1 mientras estás en UTC + 2. – Gabe
¿Ves cuál es mi problema? No quiero marcarlo como BST (que es la hora actual) porque cuando deja de ser BST regresa a GMT. Espero que sea automático. ODIO las zonas horarias. – Aabela
Afortunadamente para ti, automáticamente usará BST por momentos en el verano y GMT por momentos en el invierno. Tiene razón en que 'TimeZone' tiene problemas, pero eso es lo que' TimeZoneInfo' se creó. – Gabe