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