Вот, пожалуйста. Обратите внимание на закомментированные строки
#include <stdio.h>
#include <time.h>
int main(void) {
char buf[512];
long stamp = 1287055578;
struct tm x;
time_t cstamp = stamp; /* 1 */
x = *gmtime(&cstamp); /* 2 */
sprintf(buf, "month %d Day %d 24 Hour format %d minute %d second %d "
"subsecond nanoseconds 0",
x.tm_mon + 1, x.tm_mday, x.tm_hour, x.tm_min, x.tm_sec);
printf("%s\n", buf); /* long converted to string */
return 0;
}
1) gmtime
принимает значение типа time_t*
, поэтому я неявно преобразую long
в time_t
и передам этот адрес на следующем шаге
2) gmtime
возвращает указатель на объект struct tm
. Разыщите этот указатель и скопируйте объект в мою локальную x
переменную
Вместо gm_time
вы можете использовать localtime
, чтобы библиотечные функции могли справляться с часовыми поясами и переходами на летнее время.