C ++ time_t в std :: string для определенного часового пояса - PullRequest
2 голосов
/ 19 мая 2011

В среде Linux, работающей на C ++, мне нужно преобразовать значение time_t в английское строковое представление для различных часовых поясов. например 1305750080 -> "2011-05-18 13:21:20 PST". Я могу использовать gmtime () или localtime () в сочетании с strftime () для генерации строк для GMT и моего местного часового пояса. Как бы я выбрал альтернативный часовой пояс?

Ответы [ 3 ]

4 голосов
/ 19 мая 2011

gmtime() ссылка здесь содержит пример, показывающий очень простой способ применения смещения часового пояса. Естественно, вы можете создать класс с перечислением или чем-то еще и придумать что-нибудь более приятное.

Альтернативно boost::date_time имеет довольно обширную реализацию, которая работает на Linux и Windows.

1 голос
/ 19 мая 2011

Я думаю, что вы можете сделать это с tzset .

setenv("TZ", "EST5EDT", 1);
tzset();
0 голосов
/ 19 мая 2011

Вы можете использовать putenv, чтобы изменить переменную окружения TZ на любой часовой пояс, который вы хотите, а затем использовать localtime или предпочтительно localtime_r.Вы можете использовать getenv для кэширования старой копии, если это необходимо.

...