2

Я искал, но не могу найти правильную терминологию.

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

Как это относится к другим операционным системам?

2 ответа2

2

Системное время - это часы, поддерживаемые ядром. При обновлении файла текущее время файла обновляется до текущего времени ядра. Файловое время указано в UTC, как секунды до начала эпохи (с 1 января 1970 года). (это не совсем то, как это делает Windows - это Linux/UNIX)

Таким образом, вы можете поиграть с системным временем и установить его в обратном направлении. Вы можете получить будущие даты по файлам, --- некоторым более старым файловым системам это "не нравится". Таким образом, изменение системных часов никак не влияет на существующие времена файлов. Делайте это только с помощью команд, которые обновляют время файла, например touch или фактически изменяют файл или метаданные файла.

Вы также можете получить будущие даты для файлов с помощью системных вызовов utime() и таких команд, как touch .

Это 32-битная система, и команда touch вызывала проблемы при использовании арифметики с датой, превышающей 32-битную. Количество секунд UTC было слишком большим.

jmcnama@SNEDAP03 ~> ls -l t.lis
-rw-r--r--   1 jmcnama  other         68 Jun  4 10:17 t.lis


jmcnama@SNEDAP03 ~> touch -t 2099010100 t.lis
jmcnama@SNEDAP03 ~> ls -l t.lis
-rw-r--r--   1 jmcnama  other         68 Mar  1  2028 t.lis
1

Пожалуйста, предоставьте более подробную информацию о платформе, которую вы используете, в частности, об операционной системе и файловой системе.

Что касается Linux, он, скорее всего, будет храниться как метка времени UTC (см. Ответ Джима).

В Windows, если вы используете NTFS, вы обнаружите поведение, аналогичное Linux, в котором временная метка основана на UTC. Но они используют разные времена эпохи . Когда хранится как целое число в Linux, 0 означает 1/1/1970 . Но в Windows 0 означает 1/1/1601 .

Если вы используете FAT или FAT32 в Windows, то имейте в виду, что время файлов зависит не от UTC, а от локального часового пояса компьютера, на котором они были записаны. Это означает, что может быть неоднозначность в отношении дат перехода на летнее время, и если вы измените свой часовой пояс или перенесете файлы на компьютер в другом часовом поясе (например, через USB-ключ в формате FAT32), то время будет интерпретируется как если бы они были в этом часовом поясе.

Вы можете прочитать больше о специфике Windows здесь.

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

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