1

Я хочу установить дату создания на некоторых старых отсканированных изображениях в 1970 году. Если я делаю это с помощью стороннего инструмента, проводник Windows отображает дату как пустую. Я думал, что NTFS может вернуться к 1600-м годам. Что здесь происходит?

1 ответ1

1

Быстрый анализ

При просмотре папок в проводнике Windows не отображаются даты за пределами определенного диапазона:

Формат даты MS-DOS может представлять только даты между 01.01.1980 и 31.12.27.

Источник: функция FileTimeToDosDateTime

Это можно подтвердить, установив дату вручную:

Снимок экрана 1

Я предполагаю, что это поведение связано с обратной совместимостью. Когда 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 :

Снимок экрана 2

Диалог свойств файла может отображать любую дату, поддерживаемую базовой файловой системой:

Скриншот 3

То же самое происходит с интерфейсом командной строки при использовании команды 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, также могут быть не затронуты:

Скриншот 4

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .