C/C++获取时区偏移信息的时间戳

Dmi*_*y R 5 c c++

我需要获得以下格式的时间戳,其中包括与UTC的时区偏移量:

2014-03-07T10:03:50+ 02:00

我正在尝试这种方法,但在没有正确格式化时区信息的情况下将其作为UTC:

time_t now;
time(&now);
char ts[sizeof "1970-01-01T00:00:00+00:00"];
strftime(ts, sizeof ts, "%FT%T%z", gmtime(&now));
printf("Timestamp: %s\n\n", ts);
Run Code Online (Sandbox Code Playgroud)

这就是结果:

2014-03-07T09:29:40+ 0200

Sun*_*lly 1

man 7 strftimetm根据格式规范format对时间进行格式化。其中一种格式%z默认输出数字时区,小时和分钟之间hhmm不带冒号:

%z:时区+hhmm-hhmm数字(即相对于 UTC 的小时和分钟偏移量)。(苏)