Как я могу установить часовой пояс перед вызовом strftime? - PullRequest
6 голосов
/ 25 октября 2009

Я представляю даты, используя секунды (и микросекунды) с 1970 года, а также часовой пояс и флаг dst. Я хочу напечатать представление даты, используя strftime, но оно использует глобальное значение для часового пояса (extern long int timezone), которое берется из среды. Как я могу получить strftime для печати зоны по своему выбору?

Ответы [ 2 ]

6 голосов
/ 25 октября 2009

Следующая программа устанавливает переменную окружения UNIX TZ с требуемым часовым поясом, а затем печатает отформатированное время, используя strftime.

В приведенном ниже примере часовой пояс установлен на Тихоокеанский часовой пояс США.

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main (int argc, char *argv[])
{
    struct tm *mt;
    time_t mtt;
    char ftime[10];

    setenv("TZ", "PST8PDT", 1);
    tzset();
    mtt = time(NULL);
    mt = localtime(&mtt);
    strftime(ftime,sizeof(ftime),"%Z %H%M",mt);

    printf("%s\n", ftime);
}
1 голос
/ 25 октября 2009

Измените часовой пояс, установив timezone глобальную переменную, и используйте localtime, чтобы получить время, которое вы печатаете с помощью strftime.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...