我有一个将RFC 822时间戳转换为unixtime的函数
#include <stdio.h>
#include <time.h>
int main() {
struct tm tm;
time_t unixtime;
strptime("Sun, 20 Feb 2011 10:28:02 +0800","%a, %e %h %Y %H:%M:%S %z",&tm);
unixtime = mktime(&tm);
printf("%d\n",unixtime);
return 0;
}
问题:时区部分(%z)似乎不起作用。我尝试将输入时区更改为其他值+0100,+ 0200等而不更改其他日期值,它总是给出相同的unixtime标记(即,对应于GMT的unixtimestamp)
这里有什么问题?
答案 0 :(得分:1)
struct tm不包含时区字段。支持%z只是为了支持与strftime相同的标志。您需要手动提取和调整时区偏移量。