将RFC822时间戳转换为unix时间,时区值不起作用,C / C ++

时间:2011-02-20 14:30:23

标签: c++ c timestamp unix-timestamp rfc822

我有一个将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)

这里有什么问题?

1 个答案:

答案 0 :(得分:1)

struct tm不包含时区字段。支持%z只是为了支持与strftime相同的标志。您需要手动提取和调整时区偏移量。