2

我有一个将 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 等,它总是给出相同的 unixtimestamp(即,对应于 GMT 的 unixtimestamp)

这里可能是什么问题?

4

1 回答 1

1

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

于 2011-02-20T15:24:59.513 回答