Время эпохи в формате даты / времени - PullRequest
0 голосов
/ 04 июля 2019

У меня есть символ, содержащий время эпохи, я пытаюсь преобразовать его в формат даты / времени ГГГГ / мм / дд / ЧЧ: ММ: СС,

Я использовал strftime, но могуКажется, все не так,

Кто-нибудь может мне помочь?

            time_t eventFinish = endTime;
            struct tm *tm2 = localtime(&eventFinish);
            //syslog( LOG_INFO, "eventFinish:: %s", eventFinish);
            char buf2[64];
            strftime( buf2, sizeof( buf2 ), "%Y%m%d%H%M%S", &tm2 );
            syslog( LOG_INFO, "Your time: %s", buf2 );

eventFinish выводит ожидаемое время эпохи, buf2 выводит случайные числа.

1 Ответ

1 голос
/ 04 июля 2019

Вы должны преобразовать свою метку времени Unix в struct tm сначала

time_t ts = 1562230784; // current time as example
struct tm *tm = localtime(&ts);

, а затем использовать ее с strftime():

char buf[64];
strftime(buf, sizeof(buf), "%Y/%m/%d/%H:%M:%S", tm);
printf("Your time: %s\n", buf);

Соответствующие структуры определены в time.h.Это должно сделать то, что вы хотите.

Обратите внимание, что это вернет время в местном часовом поясе, настроенном в вашей системе.Чтобы получить UTC, вы можете использовать gmtime() вместо localtime().

...