Преобразование метки времени UNIX с использованием ctime

0

У меня есть отметка времени unix следующим образом

  char timestamp[100];
  strcpy(timestamp,"701729943");
  time_t timeval=ctime(timestamp);
  printf("Time %s",timeval);

Если проверить значение метки времени в онлайн-конвертере времени unix, то это показывает 27 марта 1992 года, но если проверка выхода программы, то она показывает feb 25,1996. Как это исправить?

  • 1
    Сначала очистите все предупреждения, которые ваш компилятор сообщает вам о несовпадающих типах без приведений, и посмотрите, не возникла ли у вас такая же проблема.
Теги:

1 ответ

3

Вы используете ctime неправильно: он ожидает указатель на time_t и возвращает строку, тогда как вы передаете ей строку и ожидаете, что она вернет time_t. Ваш компилятор не предупреждает вас об этом?

Во всяком случае, он предназначен для использования таким образом:

time_t timeval = 701729943;
printf("Time %s", ctime(&timeval));

Если у вас есть только временная метка UNIX в виде строки, используйте strtoul или atoi чтобы сделать time_t из нее, а затем сделайте это.

  • 0
    Спасибо большое за вашу помощь. Я ценю ваш ответ.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню