¿El cambio de la regla del horario de verano ha invalidado la biblioteca de tiempo de ejecución C?

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

  •  07-07-2019
  •  | 
  •  

Pregunta

Hace algún tiempo, armé una biblioteca basada en tiempo que podría usarse para calcular tiempos relativos dentro de un año para alguien. Observé en ese momento que hacía el turno de una hora en ambas direcciones para el horario de verano. Se me ocurrió que el Congreso cambió las reglas del horario de verano . No recuerdo haber visto ninguna información sobre actualizaciones para resolver el cambio en los algoritmos. ¿Alguien tiene alguna información sobre este tema?

¿Fue útil?

Solución

La mayoría de los sistemas tipo Unix usan la base de datos Olson tz para su información de zona horaria:

http://www.twinsun.com/tz/tz-link.htm

Los cambios en las reglas de zona horaria de EE. UU. se implementaron en la versión 2005l de la base de datos tz.

Otros consejos

Para Visual Studio 2005 y versiones anteriores, Microsoft lanzó versiones actualizadas de las bibliotecas de tiempo de ejecución C. Se puede encontrar más información aquí .

¿En qué plataforma estás trabajando?

Dado que el Congreso no establece las reglas para todo el mundo :) ha habido un mecanismo para especificar de manera flexible las reglas en Unix / Linux durante mucho tiempo

Ver, por ejemplo, http://www.manpagez.com/man/8 / zic / para el formato de los archivos. Es posible que su sistema en particular necesite una definición actualizada para las nuevas reglas (si la distribución no lo ha tratado ya)

Para Windows, MS incorpora algunas reglas y publica actualizaciones cuando las cosas cambian.

Para MacOs, no tengo idea, pero imagino que hereda la forma de hacer las cosas en Unix.

Pero en todos estos casos, no debería ser necesario ningún cambio en la biblioteca C

En una nota más general, el tiempo de ejecución de C usa archivos de datos internos para mapear desde la representación de tiempo interna a la configuración regional del usuario. Estas asignaciones se actualizan periódicamente por los proveedores respectivos para que coincidan con la legislación vigente.

Dado que los relojes internos deben configurarse en UTC, el horario de verano es solo cuestión de cambiar la zona horaria. Por ejemplo, en mi localidad, el 26 de octubre mi Mac cambió de CEST (horario de verano de Europa central) a CET 'normal' (horario de Europa central). La pantalla de mi reloj cambió, pero no la hora de la computadora.

http://www.timeanddate.com/library/abbreviations /timezones/eu/cest.html

De hecho, esto significa que debe mantener sus variables de fecha y hora en UTC o en un formato nativo que tenga en cuenta la zona horaria. Es por eso que solo registramos la fecha y hora como '' AAAAMMDDHHMMSS '' cadena, es un error a la espera de suceder.

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