La lutte surprenante pour obtenir une heure d'époque UNIX à partir d'une chaîne UTC en C ou C++

2025-01-19
La lutte surprenante pour obtenir une heure d'époque UNIX à partir d'une chaîne UTC en C ou C++

Cet article explore les complexités de la conversion de chaînes de caractères UTC en horodatages Unix en C/C++. L'auteur découvre des comportements inattendus dans les fonctions de gestion du temps POSIX dans diverses bibliothèques et langages C. L'accent est mis sur l'utilisation des fonctions `strptime()`, `mktime()` et `timegm()`, en soulignant les problèmes liés à l'heure d'été et aux paramètres régionaux. Des solutions sont proposées, notamment l'utilisation de `timegm()` pour les heures UTC et l'exploitation des flux C++ pour contourner les problèmes de paramètres régionaux. L'article conclut en recommandant des bibliothèques de gestion du temps plus robustes disponibles en C++20 et versions ultérieures, telles que la bibliothèque tz de Howard Hinnant.

Développement