Преобразовать временную метку RFC 822 в unixtime, значения часовых поясов не работают, C / C ++ - PullRequest
2 голосов
/ 20 февраля 2011

У меня есть функция, которая преобразует метку времени 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 (т. Е. Unixtimestamp, соответствующую GMT)

В чем здесь проблема?

1 Ответ

1 голос
/ 20 февраля 2011

struct tm не содержит поле часового пояса.% z поддерживается просто для поддержки тех же флагов, что и strftime.Вам нужно будет извлечь и настроить смещение часового пояса вручную.

...