¿Cuál es la mejor manera de convertir las fechas entre hora local y UTC en C/C++?Convirtiendo entre horas locales y GMT/UTC en C/C++
Por "datetime", me refiero a una representación de tiempo que contiene la fecha y la hora del día. Estaré contento con time_t
, struct tm
, o cualquier otra representación que lo haga posible.
Mi plataforma es Linux.
Aquí está el problema específico que estoy tratando de resolver: obtengo un par de valores que contienen una fecha juliana y una cantidad de segundos en el día. Esos valores están en GMT. Necesito convertir eso a un valor de "zona horaria local" AAAAMMDDHHMMSS ". Sé cómo convertir la fecha juliana a Y-M-D, y obviamente es fácil convertir segundos en HHMMSS. Sin embargo, la parte difícil es la conversión de la zona horaria. Estoy seguro de que puedo encontrar una solución, pero preferiría encontrar una manera "estándar" o "conocida" en lugar de tropezar.
Una cuestión relacionada es posiblemente Get Daylight Saving Transition Dates For Time Zones in C
Gracias! Sabía que algo como timegm() tenía que existir, pero no sabía el nombre. –
Me alegra ayudar. La conversión de tiempo puede ser un área bastante complicada. Por lo general, es una buena idea almacenar todo en UTC siempre que sea posible. Convertir entre zonas horarias es aún más complicado. –
Sí, lamentablemente los diseñadores del sistema eligieron la hora local como el formato de marca de tiempo "estándar" para el protocolo de mensajería. Odio cuando la gente hace eso. –