zonas timezoneinfo now horarias findsystemtimezonebyid converttimefromutc convert c# datetime timezone

c# - now - timezoneinfo findsystemtimezonebyid



Convierta una hora en zona horaria especificada utilizando C#? (4)

Estoy trabajando en una aplicación en C # con .Net 3.5. Tengo el valor de zona horaria del Usuario almacenado en DB con este formato (-05: 00,1) , donde -5.00 representa el valor de zona horaria EST y el 1 indica que esta zona horaria sigue al horario de verano (si 0 no es horario de verano) zona).

Ahora quiero convertir cualquier valor de fecha y hora en este valor de zona horaria teniendo en cuenta el valor de ahorro de luz diurna.

Cualquier ayuda es apreciada. Gracias


¿Por qué no obtiene el GMT0 y agrega la demora del usuario (+/-)?


@skeet tiene razón sobre las zonas horarias. Confía en mí, están locos. Tienes lugares como India que están a .5 horas de descanso. Lugares como Venezuela que acaban de cambiar y cambiar su zona horaria. Lugares como EE. UU. Que cambian la fecha de inicio y finalización de su horario de verano. Debes recordar que las zonas horarias están sujetas a la voluntad política del país, y cambian (con más frecuencia de lo que crees). Use la identificación de la zona horaria en lugar de intentar seguir el desplazamiento en su base de datos.

Y si aún no lo ha descubierto, usar DateTimeOffset hará que su vida sea 100 veces más fácil si tiene que lidiar con zonas horarias.



Tener solo un desplazamiento y si está o no en horario de verano no es suficiente para indicar un huso horario: puede haber varias zonas horarias con el mismo desplazamiento estándar y desplazamiento DST, pero que tienen transiciones DST en diferentes momentos.

¿Esta información ya está en la base de datos, o todavía la está diseñando? Lo ideal es que almacene un ID de zona horaria: los que TimeZoneInfo funciona son ID de Windows, lo que no es ideal (prefiero los ID de IANA / Olson con los que el resto de la industria tiende a trabajar) pero al menos representa un zona de tiempo real.

Una vez que tienes TimeZoneInfo y un instante que quieres convertir, ConvertTimeFromUtc y ConvertTimeToUtc son probablemente lo que buscas, pero ten cuidado con lo que quieres decir con "cualquier valor de fecha y hora"; debes asegurarte de que siempre sabes exactamente lo que estás representando.

El BCL es un tanto confuso en todo esto, que es una de las razones por las que comencé Noda Time , que permite el uso de los datos de la zona horaria de IANA y del BCL.