Знают ли временные пояса временные метки файлов Windows?

11809
bastibe

У меня есть файл, который был изменен до или после его отправки мне.
Однако он был создан в другом часовом поясе, поэтому, если дата изменения находится в часовом поясе отправителя, он был последним, кто изменил его. Если это в моем часовом поясе, я изменил его.

Итак, знаете ли вы, когда даты изменения файлов Windows соответствуют часовому поясу?

7
Не совсем связано с программированием. Я думаю, суперпользователь - лучшее место. Ikke 14 лет назад 1

5 ответов на вопрос

11
Thomas Pornin

Часовой пояс является артефактом преобразования из «мгновений» в удобочитаемую дату и время в каком-либо календаре.

Компьютерам не нравятся читаемые человеком форматы (по крайней мере, не так, как люди), поэтому они обычно хранят моменты в нейтральном для зоны формате. Например, в файловой системе NTFS отметки времени хранятся в формате UTC.

Следовательно, время изменения файла сохраняется должным образом, пока тот, кто его изменяет, знает текущее время. Если ваша система Windows отображает «13:19» и считает, что находится в часовом поясе GMT-5, то это означает, что текущий момент - «18:19» в UTC, и записывает столько же в недрах NTFS. Однако, если ОС отображает «13:19», но считает, что находится в часовом поясе GMT ​​+ 3, то ОС выключается на восемь часов, даже если для человека, смотрящего на экран, все выглядит хорошо.

Другой момент заключается в том, что время модификации файла является свойством системы хранения, в которой хранится файл, например файловой системы. Когда файл «отправляется», тогда это время не обязательно будет перемещаться вместе с ним. Некоторые форматы архивов (например, Zip) встраивают время изменения файла вместе с файлом. Это не относится к файлу, отправленному «как есть», прикрепленному к электронному письму, время изменения файла не будет.

Это было редким, gpg-ed и по электронной почте. Поскольку временная метка модификации была раньше, чем метка создания, я думаю, она сохранилась правильно. bastibe 14 лет назад 0
5
Mark Ransom

Вы можете увидеть некоторые подсказки в документации Microsoft для FILETIME . В структуре нет положения о часовом поясе, но в тексте говорится, что NTFS хранит все времена файла в формате UTC.

4
David Pfeffer

Временные метки Windows учитывают часовой пояс. Тем не менее, ваш механизм передачи файлов может не быть.

Это может быть проблемой ... Спасибо за указание на это! bastibe 14 лет назад 0
Просто для пояснения, нет фактического поля для часового пояса, но, поскольку все времена хранятся в UTC, а затем на лету преобразуются в местное время в Explorer, это не проблема. David Pfeffer 14 лет назад 3
с точки зрения пользовательского опыта, первое утверждение кажется правильным, но с технической точки зрения оно совершенно неверно. однако, ваше разъяснение правильно, и вы должны действительно отредактировать свой ответ, чтобы указать это напрямую. quack quixote 14 лет назад 1
2
AdamV

В качестве дополнения отметьте, что, хотя даты изменения файлов из NTFS или других файловых систем могут быть привязаны к часовому поясу, данные EXIF ​​(например, дата / время, когда снимок был сделан вашей камерой), вполне могут быть и не могут храниться как UTC, так что может оказаться сложно конвертировать. Просто мысль, в случае, если файл создать / изменить / EXIF ​​дата / время, кажется, не согласны.

Кажется, я вспоминаю Windows 7, улучшенную по сравнению с предыдущими версиями, с точки зрения отображения данных EXIF, то есть преобразования их на лету для кратких целей в текущее местное время, если это возможно.

+1 EXIF ​​обычно просто хранит местное время и не может указать часовой пояс :-( sleske 14 лет назад 0
2
AnonF

Remember that FAT filesystems are NOT timezone aware but this only affects you if you are carrying the file on a device with a FAT filesystem that is crossing timezones.

Или в летнее время. Brendan Abel 11 лет назад 0
То же самое относится и к файлам внутри ZIP-архивов, поскольку формат наследует формат отметки времени FAT16 (точность 2 секунды и информация о часовом поясе отсутствует). rustyx 8 лет назад 0