Короткая заметка и ссылки. Возможно потом дополню информацией о разрешении (resolution) временных меток.
- FAT/FAT32
- Хранит локальное время, без указания Timezone. Поменяешь в системе зону - время создания файлов останется без изменений. Т.е. нужно помнить в какой ТЗ они создавались.
- Windows сохраняет вот прям вот локальное время
- Linux добавляет час, при переводе часов
- timestamp:
- дата 16 битное число: 7 бит - год, 4 бита - месяца, 5 бит - день. Год в диапазоне 1980-2107.
- время 16 битное число для часов, минут, секунд
- exFAT:
- Время хранится локальное. Но есть нюанс.
- Временная зона хранится в 1 байте. Vista SP1 не использует его. Что бы нормально жилось, старший бит сигнализирует - применять или нет смещение зоны. 0 - не применять. 1 - применять. Остальные 7 бит - 15минутные интервалы для смещения. Положительное направление - на восток.
- Т.е. если бит 7 в TZ поднят, то система будет пересчитывать время файла в UTC, что бы корректно отобразить в системе при смене часового пояса. Эдакая обратная совместимость.
- NTFS
- Время хранится в UTC
- EXTx (EXT2/3/4)
- Время хранится в UTC
Полезные ссылки
-
Windows and Unix/Linux handle the effect of DST (daylight saving time) on time stamps differently
- NTFS
- FAT/FAT32
- EXT2
-
Does the filesystem windows is installed on have an effect on the time zone settings of timestamps within windows registry hives?
- FAT64/exFAT
-
exFAT File System Time Zone Concerns - смотреть через Tor
- exFAT
-
exFAT Filesystem
- Похоже, что таки время локальное. Но TZ offset хранит зону, и можно посчитать UTC
CreateTZOffset
- Исходники Linux 5.7+ - есть нативная реализация exFAT.