Получить время последней модификации файла и сравнить - PullRequest
6 голосов
/ 21 декабря 2009

Мне нужен фрагмент функции, который будет принимать файл и рассчитывать, сколько дней, если он был старше этой даты, вернет 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 ]

13 голосов
/ 21 декабря 2009

В Windows есть API-функция под названием GetFileTime() ( doc на 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 и т. Д. Для сравнения с вашим числом дней.

2 голосов
/ 21 декабря 2009

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

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

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