Converting UTC time strings to UNIX epoch timestamps in C/C++ is surprisingly difficult due to quirks in POSIX time functions like `mktime()` and `strptime()`.
`mktime()` ignores `tm_gmtoff` and `tm_zone`, always interprets input as local time, and normalizes `struct tm` with side effects; reusing `tm_isdst` requires resetting to -1.
`strptime()` with `%z` or `%Z` is unreliable for timezone parsing, and its behavior depends on locale; calling `setlocale()` can break English-only time string parsing.
The recommended approach for UTC parsing is to use `timegm()` (or `mkgmtime()` on Windows) instead of manipulating TZ environment variable or relying on `mktime()`.