преобразовать время из int в c - PullRequest
1 голос
/ 23 октября 2009

Если у меня есть целое число в c, представляющее дату, как мне распечатать действительные мм / дд / год?

64-битное значение, представляющее число интервалов в 100 наносекунд с 1 января 1601 года (UTC)

1183042181

что, если я нахожусь в 32-битной системе и должен прочитать целое число из файла?

C не C ++

Ответы [ 4 ]

3 голосов
/ 23 октября 2009

Библиотека C содержит функцию strftime, которая будет форматировать struct tm, используя указанную строку формата. Оттуда, конечно, вы можете распечатать его. Итак:

  • Преобразуйте ФИЛЬТРОМ в секунды с 1601 года путем деления на 10 000 000.
  • Преобразование в стандартную метку времени UNIX путем вычитания количества секунд между 1601-01-01 и 1970-01-01.
  • Используйте localtime (), чтобы преобразовать это в struct tm.
  • Используйте strftime () для получения отформатированной строки.
  • Распечатать.
  • Напишите функцию, которая сделает все это, чтобы вам не пришлось делать это снова.
2 голосов
/ 23 октября 2009

Прочтите раздел MSDN:

Примечания

Чтобы преобразовать структуру FILETIME в время, которое легко отобразить пользователь, используйте FileTimeToSystemTime функция.

1 голос
/ 23 октября 2009

Введите время в struct tm и позвоните strftime().

Все это объявлено в .

0 голосов
/ 23 октября 2009

Вы можете использовать эту процедуру для преобразования вашего 64-битного значения в структуру time_t

time_t FileTimeToUnixTime(FILETIME& ft)
{
    ULARGE_INTEGER li;
    assert(sizeof(ULARGE_INTEGER) == sizeof(FILETIME));
    memcpy(&li, &ft, sizeof(FILETIME));
    li.QuadPart -= 116444736000000000;
    li.QuadPart /= 10000000;
    return (time_t)(li.LowPart);
} 

Конечно, это будет работать только в том случае, если ваш FILETIME действительно находится в диапазоне time_t. Я полагаю, вы знаете, что делать с полученным time_t.

32-битная система не помешает вам читать 64-битные как двоичные значения. Если вы предпочитаете scanf, вы можете использовать формат "% llu".

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