Файловое время (file time) - это 64-битовое значение, которое представляет собою число интервалов по 100 наносекунд, которые истекли с 12:00 утра 1 января 1601 года (универсальное глобальное время (UTC)). Система делает запись файлового времени всякий раз, когда приложения создают, обращаются и пишут в файлы. Файловая система FAT делает запись файлового времени в значениях местного времени.
Файловая система NTFS хранит значения времени в формате универсального глобального времени (UTC), таким образом оно не подвержено изменениям в часовом поясе или летнем времени. Файловая система FAT хранит значения времени, основанное на местном времени компьютера. Например, файл, который сохраняется в томе NTFS в 3:00pm стандартного тихоокеанского времени (PST) в Вашингтоне, смотрится как 6:00pm эталонного восточного времени (EST) в Нью-Йорке, но оно выглядит как 3:00pm EST в Нью-Йорке в томе FAT.
Время создания/изменения файла обновляется неоднократно и по различным причинам. Единственная гарантия касательно времени создания/изменения файла - то, что файловое время правильно отражается тогда, когда дескриптор, который делает изменение в нём, закрывается.
Не все файловые системы могут делать запись времени создания и последнего доступа, и не все файловые системы делают запись его в одной и той же манере. Например, в системе FAT время создания имеет градацию записи 10 миллисекунд, у времени записи - градация времени 2 секунды, а у времени доступа - градация времени 1 день (фактически дата доступа). Система NTFS задерживает обновление предпоследнего времени доступа к файлу на один час после последнего доступа.
Чтобы извлечь файловое время для заданного файла, используйте функцию GetFileTime. GetFileTime копирует создание, последний доступ и время самой последней записи в отдельные структуры FILETIME. Вы можете также извлечь файловое время, используя функции FindFirstFile и FindNextFile. Эти функции копируют файловое время в структуры FILETIME в структуре WIN32_FIND_DATA. При записи в файл время самой последней записи полностью не обновляется до тех пор, пока не закроются все дескрипторы, используемые для того, чтобы писать.
Чтобы установить файловое время для файла, используйте функцию SetFileTime. Эта функция позволяет Вам модифицировать создание, последний доступ и время самой последней записи, не изменяя содержимое файла. Вы можете сравнить время различных файлов при помощи использования функции CompareFileTime. Функция сравнивает два файловых времени и возвращает значение, указывающее, какое время позже или возвращает нуль, если времена равны.
Если Вы планируете модифицировать файловое время для заданных файлов, Вы можете преобразовать дату и время дня в файловом времени при помощи использования функции SystemTimeToFileTime. Вы можете также получить системное время в структуре FILETIME при помощи вызова функции GetSystemTimeAsFileTime.
Чтобы сделать файловое время легким для показа пользователю на экране, используйте функцию FileTimeToSystemTime. FileTimeToSystemTime преобразует файловое время и копирует месяц, день, год и время дня из файлового времени в структуры SYSTEMTIME.
Дополнительную информацию смотри в статьях: