# FILETIME

Структура `FILETIME` - это 64-х разрядное значение, представляющее число сто-наносекундных интервалов, прошедших с первого января 1601 года (UTC).

    typedef struct _FILETIME {
      DWORD dwLowDateTime;
      DWORD dwHighDateTime;
    } FILETIME;

### Элементы

dwLowDateTime
Младшие 32 бита времени файла
dwHighDateTime
Старшие 32 бита времени файла

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

Не рекомендуется, добавлять или вычитать значения из этой структуры для получения относительного времени. Вместо этого вы можете:

- Скопировать результирующую структуру в структуру ULARGE_INTEGER
- Использовать обычную 64-х битную арифметику для значения ULARGE_INTEGER или привести переменную типа `FILETIME` к типу `__int64`:

      FILETIME WriteTime1, WriteTime2;

      if(*(__int64*) & WriteTime1 == *(__int64*) & WriteTime2)
       ...

Не все файловые системы могут хранить время создания и доступа, и не все они хранят времена одинаковым образом. Например, в FAT время создания задаётся с точностью до 10 миллисекунд, записи - до 2 секунд, а время доступа - 1 день (фактически, дата доступа). У NTFS время доступа имеет точность в 1 час. Таким образом, функция GetFileTime может вернуть время, отличное от установленного функцией SetFileTime. К тому же, FAT хранит времена в локальном часовом поясе, а NTFS - в универсальном синхронизированном времени (UTC).
Смотрите также:
CompareFileTime, GetFileTime, SetFileTime, ULARGE_INTEGER