Получить время последней модификации файла и сравнить

Я хочу часть функции, которая будет принимать файл и длиться сколько дней, если он был старше этой даты, вернет 0 в противном случае 1... Что-то в этом роде...

Например:

int IsOlder(TCHAR *filename, int days)
{

do operation.

If last modify date was older than days variable
return 0
else
return 1

}

Это MS VC++ 6 для Windows. Спасибо теперь!

2 ответа

Решение

В Windows есть функция API, которая называется GetFileTime() ( документ по MSDN), принимая дескриптор файла в параметре и 3 FILETIME структуры, которые будут заполнены информацией о дате и времени:

FILETIME creationTime,
         lpLastAccessTime,
         lastWriteTime;
bool err = GetFileTime( h, &creationTime, &lpLastAccessTime, &lastWriteTime );
if( !err ) error

FILETIME структура запутана, используйте функцию FileTimeToSystemTime() перевести это на SYSTEMTIME структура, которая намного проще в использовании:

SYSTEMTIME systemTime;
bool res = FileTimeToSystemTime( &creationTime, &systemTime );
if( !res ) error

Тогда вы можете использовать поля wYear, wMonthи т. д. для сравнения с вашим количеством дней.

GetFileTime получает различные даты, относящиеся к файлу. Есть пример.

Вам нужно будет выбрать время последней записи и рассчитать разницу в днях оттуда. Как GetFileTime функция возвращает довольно громоздкий FILETIME структура, которую вы, вероятно, хотите преобразовать в системное время (struct SYSTEMTIME) с FileTimeToSystemTime,

Другие вопросы по тегам