C/C++ 中处理 UTC 时间字符串的惊人挑战

2025-01-19
C/C++ 中处理 UTC 时间字符串的惊人挑战

本文探讨了在 C/C++ 中将 UTC 时间字符串转换为 Unix 时间戳的复杂性。作者发现 POSIX 时间处理函数在不同 C 库和语言中的实现存在许多意想不到的行为。文章重点介绍了 `strptime()`、`mktime()` 和 `timegm()` 函数的使用,并指出了在处理夏令时和不同区域设置时可能遇到的问题。作者还提供了解决方案,包括使用 `timegm()` 函数处理 UTC 时间,以及使用 C++ 流来绕过区域设置问题。文章最后推荐了 C++20 及更高版本中提供的更强大的时间处理库,例如 Howard Hinnant 的 tz 库。

开发