2008-10-11 40 views
9

Estoy trabajando en C# .net - .Net fx es 2.0, que no admite la conversión entre diferentes zonas horarias. He escrito un planificador basado en UTC pero está dando errores de 1 hora en los períodos DTS para Londres. Necesito alguna solución para poder calcular la hora correcta en cualquier zona horaria relativa a UTC con los ajustes de horario de verano correctos.Cómo convertir hora UTC a hora en cualquier otra zona horaria en C#

Respuesta

10

Está cambiando a .NET 3.5 absolutamente fuera de la cuestión? Haría tu vida mucho, mucho más fácil. De lo contrario, estás atrapado con las clases simples TimeZone y DaylightSavings, además de tener que buscar las zonas horarias conocidas usando P/Invoke.

William Stacey tiene un blog post with some code to do this - pero no lo he probado, por lo que no puedo garantizar su precisión. (En mi experiencia, él suele ser bastante bueno :) No hay duda de que hay trozos de código similares si ese no te ayuda.

Creo que la API que está utilizando no tiene acceso a los datos históricos, por cierto. En otras palabras, asumirá que DST siempre se activa el primer domingo de octubre (o cualquiera que sea la regla) en lugar de saber que la regla ha cambiado con el tiempo. TimeZoneInfo en .NET 3.5 admite datos históricos donde lo hace el sistema operativo.

+0

De acuerdo. He visto código antiguo haciendo las cosas de P/Invoke, y TimeZoneInfo en 3.5 lo vuelve obsoleto. –

+0

Finalmente he logrado cambiar la plataforma a 3.5. – MSIL

+0

Hola Jon, la publicación del blog ya no está disponible, pregunta estúpida, ¿sabes dónde podría mirar o señalarme en algún lugar que pueda ayudarme a encontrar esa información? –

Cuestiones relacionadas