¿Cómo puedo determinar si una fecha determinada está en horario de verano para una zona horaria determinada en .NET 2.0?

StackOverflow https://stackoverflow.com/questions/44795

Pregunta

Estoy en .NET 2.0, ejecutándolo en Medium Trust (así que Información de zona horaria y el Registro no son opciones permitidas).Le estoy pidiendo al usuario dos fechas y una zona horaria, y realmente me encantaría poder determinar automáticamente si necesito ajustar la zona horaria para el horario de verano.

Probablemente este ni siquiera sea un escenario válido a menos que tenga algunos muy soporte robusto, a la Información de zona horaria, para diferenciar entre todas las diferentes variedades de zonas horarias en primer lugar.

¿Fue útil?

Solución

En .NET 2.0 tienes que codificar esto tú mismo.Implica investigar las leyes de horario de verano en varias regiones e incorporarlas en sus propias estructuras de datos.El problema se simplifica un poco si solo le interesa un subconjunto de zonas horarias, por ejemplo, solo en los EE. UU., pero si necesita todas las zonas horarias globales, tiene mucho trabajo por hacer y luego el código debe actualizarse cada vez. pocos años cuando las leyes cambian.Incluso los nuevos objetos de zona horaria en la última versión de .NET requerirán actualizaciones de Windows para mantenerlos correctos a medida que cambien las leyes.

Mirar aquí, aquí, y aquí para más información.

Otros consejos

El Base de datos TZ es una base de datos de dominio público de reglas de zona horaria que está muy bien mantenida.También hay un formato compilado para los datos que proporcionan y hay muchas bibliotecas disponibles para leer los datos compilados, como esta: ZoneInfo (base de datos tz/base de datos Olson) API .NET

Excelente biblioteca de zonas horarias aquí: TZ4Net

Bueno, desde TimeZoneInfo está excluido, probablemente no encontrará una solución en el marco en sí (pero no me cite al respecto).

En cuyo caso, ¿ha considerado reflejar el TimeZoneInfo clase y usar lo que encuentres allí?

@domenico, Lo he considerado, pero preferiría seguir siendo legal, y estoy bastante seguro de que la información tendría que integrarse en el marco de todos modos, o extraerse del registro de alguna manera furtiva que no requiera permisos. .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top