Несколько лет назад я наткнулся на этот файл на наш сервер.
И мне интересно, как может файл это сказать'был создан в 1641? Насколько я знаю, время на ПК определяется количество секунд с 1 января 1970 года. Если это показатель его убить, вы можете сделать 31 декабря 1969 г. (индекс, вероятно, говорит -1), но я'м не знаю, это, казалось бы, произвольную дату, которая предшествует даже на основателей Соединенных Штатов Америки.
Так как файл может быть датировано 1641?
ЗЫ: даты по-французски. Фévrier-февраль.
Windows не хранит изменения файла, метки времени как сделать UNIX-систем. Согласно [Центр разработчиков Windows][2] (выделено мной):
файл-это 64-разрядное значение, представляющее количество 100-наносекундных интервалов, прошедших с 12:00 утра 1 января, 1601 всемирное координированное время (UTC). Система записывает файлы, когда приложения создавать, получать доступ и запись в файлы.
Таким образом, установив неправильное значение, можно легко получить датируется 1600-х годов.
Конечно, еще один важный вопрос: как это значение? Какова фактическая дата? Я думаю, что вы'll никогда не быть в состоянии выяснить, как это может быть просто ошибка расчета в драйвере файловой системы. Другой ответ предполагает, что дата на самом деле является метка времени Unix интерпретируется как метка для Windows, но они'вновь действительно рассчитаны на разные промежутки времени (в секундах и наносекундах).
Использование 64-разрядный тип данных означает, что Windows (как правило) не влияет год 2038 Проблема, что традиционные UNIX-систем, так как ОС UNIX изначально использовали 32-битное целое число, которое переполняется раньше, чем 64-битное целое, что Windows не имеет. (И это несмотря на операционных Unix на секунды и ОС Windows по микро-и наносекунд.)
Окна влияют при использовании 32-битных программ, которые были составлены при старых версиях Visual студии, конечно.
Более новых операционных системах Unix уже расширили тип данных в 64 бит, тем самым избегая проблему. (В самом деле, начиная с меток времени Unix работать в секундах, новый закрученными дата будет 292 миллиардов лет.)
Для любознательных – здесь's, Как посчитать, что:
@corsiKa
объясняет, как мы можем убрать високосные годы: 29247 / 365 / 4 ≈ 20Некоторые люди на самом деле пытался установить этот и придумал один и тот же год.
[2]: https://msdn.microsoft.com/en-us/library/windows/desktop/ms724290(В=и 85).аспн
Если вы Don'т чувствовать себя слишком плохо о какой-то догадки, позвольте мне предложить объяснение. И я Дон'т имею в виду "у кого-то установите значение в бред" и, что'ы, очевидно, всегда возможно :)
Unix время обычно используется количество секунд с 1970 года. Окна, с другой стороны, использует 1601 в качестве отправной год. Итак, если мы предположим (и это'ы большой предположение!) что проблема заключается в неправильном преобразования в два раза, можно предположить, что даты, которые должны быть представлены фактически в <удар>когда-то в 2011 году (1970 + 41), который был неправильно преобразованы в 1640 (1601 + 41)</удара>. Редактировать: на самом деле, я сделал ошибку в Windows, начиная года. Это's возможно, что фактическое время создания в 2010 году, или это была другая ошибка (на одну ошибки встречаются довольно часто в программное обеспечение :г).
Учитывая, что в этом году случается еще одна из дат отслеживания, связанный с файлом в вопрос, я думаю, это's довольно правдоподобное объяснение :)
Как уже было написано другими, [эпоха Windows находится в 1601-01-01 00:00][эпохи].
Количество секунд между этой эпохой и filetime и отображается, [это 1.266.705.294][для Windows]. Если добавить, что в эпохи Unix, то прибудете в 2010-02-20 23:34:54 мск, суббота. Это примерно за год до даты последнего доступа, что делает его немного правдоподобно. Так это может быть метка времени Unix, толковать неправильно эпохи.
Как обычно для этих типов вопросов, Рэймонд Чен's блоге есть ответ относительно этого [от "Почему это с Win32 эпохи 1 января 1601 года?&и" запись от 6 марта 2009 года,:] (https://blogs.msdn.microsoft.com/oldnewthing/20090306-00/?p=18913/)
и GT; `filetime и структура записей в форме 100-наносекундных
интервалов с 1 января 1601 года. Почему выбран этот день?
Григорианский календарь работает на 400-летний цикл, и 1601 является В первый год цикла, которая была активна во время Windows NT была проектируется. Другими словами, он был выбран, чтобы сделать математику приятно.
У меня на самом деле есть письмо от Дэйва Катлера, подтверждающие это.