Доберитесь файл в последний раз изменяют время и выдерживают сравнение

Я хочу часть функции, которая возьмет файл и продлится, сколько дней, если это было более старым, чем та дата, возвратится 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. Спасибо с этого времени!

6
задан aJ. 21 December 2009 в 08:56
поделиться

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 и т. д., чтобы сравнить с вашим количеством дней.

13
ответ дан 8 December 2019 в 16:03
поделиться

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

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

2
ответ дан 8 December 2019 в 16:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: