Der überraschende Kampf, eine UNIX-Epoch-Zeit aus einem UTC-String in C oder C++ zu erhalten
2025-01-19
Dieser Artikel befasst sich mit den Komplexitäten der Konvertierung von UTC-Zeitstrings in Unix-Zeitstempel in C/C++. Der Autor entdeckt unerwartetes Verhalten in POSIX-Zeitbehandlungsfunktionen in verschiedenen C-Bibliotheken und -Sprachen. Der Fokus liegt auf der Verwendung von `strptime()`, `mktime()` und `timegm()`, wobei Probleme mit der Sommerzeit und Gebietsschemas hervorgehoben werden. Lösungen werden angeboten, darunter die Verwendung von `timegm()` für UTC-Zeiten und die Nutzung von C++-Streams, um Gebietsschema-Probleme zu umgehen. Der Artikel schließt mit der Empfehlung robusterer Zeitbehandlungsbibliotheken in C++20 und höher, wie der tz-Bibliothek von Howard Hinnant.
Entwicklung