Я хочу установить дату создания на некоторых старых отсканированных фотографиях на 1970 год. Если я сделаю это с помощью стороннего инструмента, проводник Windows отобразит дату как пустую. Я думал, что NTFS может вернуться к 1600-м годам. Что происходит?
решение1
Быстрый анализ
При просмотре папок проводник Windows не отображает даты за пределами определенного диапазона:
Формат даты MS-DOS может отображать только даты между 1/1/1980 и 12/31/2107.
Источник:Функция FileTimeToDosDateTime
Это можно подтвердить, вручную установив дату:
Я предполагаю, что такое поведение связано с обратной совместимостью. КогдаNTFSне существовало, даты создания, изменения и доступа были спроектированы так, чтобы занимать по 16 бит каждая (2 байта). Информация упаковывается следующим образом:
Bits | Description
-------------------------------------------------------
0–4 | Day (1-31)
5–8 | Month (1 = January, 2 = February, etc.)
9-15 | Year offset from 1980 (0 = 1980, 1 = 1981, etc.)
Для экономии бит год не хранится как целое число; вместо этого используется смещение. Поскольку бит 7, это означает 2^7 = 128
возможные значения, например 1980-2107.
Что касается NTFS, то вот что говорится в документации:
Авремя файла— это 64-битное значение, представляющее собой число 100-наносекундных интервалов, прошедших с 12:00 утра 1 января 1601 года по всемирному координированному времени (UTC). Система записывает время файлов, когда приложения создают, получают доступ и записывают файлы.
Файловая система NTFS хранит значения времени в формате UTC, поэтому на них не влияют изменения часового пояса или переход на летнее время. Файловая система FAT хранит значения времени на основе локального времени компьютера.
Источник:Время файла
дальнейшее чтение
Обходной путь
В некоторых случаях вы можете обойти эту проблему с помощьюЭКСИФтеги:
Диалоговое окно свойств файла может отображать любую дату, поддерживаемую базовой файловой системой:
То же самое происходит и с интерфейсом командной строки при использовании dir
команды:
01/01/1601 02:23 AM 0 1-oldest.txt
01/01/1970 02:23 AM 0 2-older.txt
01/01/1980 02:23 AM 0 3-old.txt
01/01/2014 02:23 AM 0 4-current.txt
01/01/2107 02:23 AM 0 5-new.txt
01/01/9999 02:23 AM 0 6-newer.txt
Сторонние программы, такие как7-Зиптакже могут быть не затронуты: