c# timezone dst

c# - ¿ConvertTimeFromUtc() y ToUniversalTime() manejan el horario de verano?



timezone dst (1)

Sí. ConvertTimeFromUtc manejará automáticamente los ajustes del horario de verano, siempre y cuando la zona horaria a la que se dirige utilice el horario de verano.

De la documentación de MSDN :

Al realizar la conversión, el método ConvertTimeFromUtc aplica las reglas de ajuste vigentes en la zona horaria destinationTimeZone .

No debe intentar agregar una hora adicional en su conversión. Eso te dará una traducción incorrecta.

Con respecto a DateTime.ToUniversalTime , tiene en cuenta el horario de verano, pero tenga cuidado con este método. Se supone que el valor de entrada está en la zona horaria local de la computadora. Si solo necesitas marcarlo con DateTimeKind.Utc , usa DateTime.SpecifyKind lugar.

Si el horario de verano está vigente, y se ha guardado un objeto de fecha en la base de datos (formato UTC) que recupera para mostrarlo en la vista (por ejemplo, la vista en asp.net-mvc ).

Y lo haces usando este método:

public static DateTime ConvertToLocalTimeFromUtcTime(DateTime utcDate, string timeZoneId) { TimeZoneInfo localZone = TimeZoneInfo.FindSystemTimeZoneById(timeZoneId); DateTime localTime = TimeZoneInfo.ConvertTimeFromUtc(utcDate, localZone); if (localZone.IsDaylightSavingTime(localTime)) localTime = localTime.AddHours(1); // is this needed !? return localTime; }

La pregunta es: ¿ TimeZoneInfo.ConvertTimeFromUtc() maneja las DST o tiene que verificar que usted mismo y agregar o restar X hora (s) al objeto de fecha?

La misma pregunta para cuando persistir un objeto de fecha en la base de datos al convertirlo a formato UTC con ToUniversalTime() .