У меня есть отметка времени unix следующим образом
char timestamp[100];
strcpy(timestamp,"701729943");
time_t timeval=ctime(timestamp);
printf("Time %s",timeval);
Если проверить значение метки времени в онлайн-конвертере времени unix, то это показывает 27 марта 1992 года, но если проверка выхода программы, то она показывает feb 25,1996. Как это исправить?
Вы используете ctime
неправильно: он ожидает указатель на time_t
и возвращает строку, тогда как вы передаете ей строку и ожидаете, что она вернет time_t
. Ваш компилятор не предупреждает вас об этом?
Во всяком случае, он предназначен для использования таким образом:
time_t timeval = 701729943;
printf("Time %s", ctime(&timeval));
Если у вас есть только временная метка UNIX в виде строки, используйте strtoul
или atoi
чтобы сделать time_t
из нее, а затем сделайте это.