Método TimeZoneInfo.GetSystemTimeZones: ¿incluye horario de verano, etc.?
Estoy haciendo esto:
var tzs = TimeZoneInfo.GetSystemTimeZones();
TimezoneList = tzs.Select(tz => new SelectListItem()
{
Text = tz.DisplayName,
Value = tz.Id
}).ToArray();
para obtener información de la zona horaria.
Funciona bien, aunque necesitamos que sea sensible al horario de verano (por ejemplo, British Summer Time en lugar de UTC o Eastern Time frente a Eastern Daylight Time). ¿Alguien sabe cómo hacerlo con este método, o conoce un método diferente para hacerlo?
Gracias.
davy.ai
Para asegurarse de ser sensible al horario de verano, puede utilizar el método
TimeZoneInfo.ConvertTimeFromUtc
para convertir la hora UTC a la hora local de una zona horaria específica, teniendo en cuenta el horario de verano. Aquí tienes un ejemplo de cómo puedes modificar el código anterior para incluir el horario de verano:En este código modificado, se utiliza
TimeZoneInfo.ConvertTimeFromUtc
para convertir la hora UTC actual (obtenida conDateTime.UtcNow
) a la hora local de cada zona horaria (utilizandoTimeZoneInfo.FindSystemTimeZoneById(tz.Value)
). La hora local resultante (que incluye el horario de verano) se incluye en el texto de visualización de cada zona horaria. Esto asegurará que tu código tenga en cuenta el horario de verano al mostrar la lista de zonas horarias.