Я хочу установить дату создания на некоторых старых отсканированных изображениях в 1970 году. Если я делаю это с помощью стороннего инструмента, проводник Windows отображает дату как пустую. Я думал, что NTFS может вернуться к 1600-м годам. Что здесь происходит?
1 ответ
Быстрый анализ
При просмотре папок в проводнике Windows не отображаются даты за пределами определенного диапазона:
Формат даты MS-DOS может представлять только даты между 01.01.1980 и 31.12.27.
Источник: функция 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 хранит значения времени, основанные на локальном времени компьютера.
Источник: File Times
дальнейшее чтение
Временное решение
В некоторых случаях вы можете обойти эту проблему с помощью тегов EXIF :
Диалог свойств файла может отображать любую дату, поддерживаемую базовой файловой системой:
То же самое происходит с интерфейсом командной строки при использовании команды 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-Zip, также могут быть не затронуты: