# GetFileTime

Функция `GetFileTime` возвращает дату и время создания, модификации и последнего доступа к файлу.

    BOOL GetFileTime(
      HANDLE hFile,
      CONST FILETIME *lpCreationTime,
      CONST FILETIME *lpLastAccessTime,
      CONST FILETIME *lpLastWriteTime
    );

### Параметры

hFile
идентифицирует файл, для которого извлекаются дата и время. Файловый дескриптор должен быть создан с доступом `GENERIC_READ` к файлу.
lpCreationTime
указывает на структуру типа FILETIME, которая получает дату и время создания файла. Значение этого параметра может быть равно `NULL`, если приложению не требуется эта информация.
lpLastAccessTime
указывает на структуру типа FILETIME, которая получает дату и время последнего доступа к файлу. Время последнего доступа включает в себя время, когда в последний раз: в файл записывалась информация, читалась информация из файла, или, в случае исполняемых файлов, файл запускался на исполнение. Значение этого параметра может быть равно `NULL`, если приложению не требуется эта информация.
lpLastWriteTime
указывает на структуру типа FILETIME, указывает на структуру типа `FILETIME`, которая получает дату и время последней записи в файл. Значение этого параметра может быть равно `NULL`, если приложению не требуется эта информация.

### Возвращаемое значение

В случае успеха возвращается ненулевое значение.
Если функция завершается неудачно, возвращается ноль. Для получения дополнительной информации следует вызвать функцию `GetLastError`.

### Замечания

Файловые системы FAT и NTFS поддерживают время создания файла, время последнего доступа к файлу и время последней записи в файл.

Точность хранения времени

- Точность, с которой сохраняются значения времени для файлов, зависит от используемой операционной системы, файловой системы, сетевой конфигурации. Подробнее см. замечания к структуре FILETIME.

NTFS

- Когда Windows NT создаёт список каталогов (Проводник, команда DIR, и т.д.) в разделе NTFS, она модифицирует дату/время последнего доступа на каждом обнаруженном каталоге. Если каталогов очень много, это может повлиять на эффективность.
  Семейство Windows NT на файловой системе NTFS позволяет отключать дату/время последнего доступа (см. Disable the NTFS Last Access Time Stamp)
- Если вы удалите или переименуете файл, а затем достаточно быстро восстановите его, Windows NT может восстановить из кеша некоторые данные о файле: длинное и короткое имя файла, а также дату его создания.

### Пример

Следующий пример показывает как получить дату/время модификации файла в виде строки (Windows NT).

    BOOL GetLastWriteTime(HANDLE hFile, LPSTR lpszString)
    {
      FILETIME ftCreate, ftAccess, ftWrite;
      SYSTEMTIME stUTC, stLocal;

      // получить файловую дату и время
      if (!GetFileTime(hFile, &ftCreate, &ftAccess, &ftWrite))
          return FALSE;

      // преобразовать время модификации в локальное время.
      FileTimeToSystemTime(&ftWrite, &stUTC);
      SystemTimeToTzSpecificLocalTime(NULL, &stUTC, &stLocal);

      // преобразовать полученное время в строку
      wsprintf(lpszString, "%02d/%02d/%d  %02d:%02d",
          stLocal.wDay, stLocal.wMonth, stLocal.wYear,
          stLocal.wHour, stLocal.wMinute);

      return TRUE;
    }

Смотрите также:
FILETIME, GetFileSize, SetFileTime, GetFileType