Если открыть свойства любого файла в Windows, система отобразит привычные даты создания и изменения. Однако на глубоком программном уровне Windows использует иную точку отсчета — 1 января 1601 года. Этот выбор не является случайным наследием или ошибкой, а продиктован необходимостью упростить математические вычисления для операционной системы.

Почему Windows использует формат FILETIME
Для компьютеров привычные человеку даты — лишь форма представления данных. Внутри системы время фиксируется в виде чисел. Одним из ключевых форматов в Windows является FILETIME. Согласно документации Microsoft, это 64-битное значение, представляющее количество интервалов по 100 наносекунд, прошедших с 00:00 UTC 1 января 1601 года.
Использование этого стандарта позволяет системе отсчитывать время независимо от локального часового пояса пользователя. Операция деления каждой секунды на 10 миллионов интервалов обеспечивает высокую точность. Важно отметить, что разные файловые системы, например NTFS или FAT, могут хранить метки времени иначе, однако при обращении программ Windows конвертирует эти значения в единый внутренний формат.
Математическая логика григорианского календаря
Решение выбрать 1601 год было продиктовано правилами григорианского календаря, который содержит ряд условий для високосных лет. Обычно високосным является каждый четвертый год, за исключением лет, кратных 100, если они при этом не делятся на 400. Например, 2000 год был високосным, в то время как 1900 — нет, а 2100 не будет таковым.
При анализе полного 400-летнего цикла выясняется, что он включает 97 високосных и 303 обычных года, что в сумме составляет 146 097 дней. Это число делится на семь без остатка, образуя ровно 20 871 неделю. Благодаря такой структуре календарные циклы повторяются, позволяя программному обеспечению работать с математически предсказуемым интервалом вместо серии исключений. 1601 год был первым годом такого цикла на момент проектирования Windows NT.
Инженер Microsoft Рэймонд Чен подтвердил эту информацию в блоге The Old New Thing, сославшись на переписку с архитектором Windows NT Дэйвом Катлером. Разработчики стремились получить «чистую» математическую границу, которую предоставил им календарь.
Запас прочности системы времени Windows
История компьютерных систем знает проблемы, связанные с ограничениями форматов времени, наиболее известной из которых является «проблема 2038 года», касающаяся традиционного Unix-времени. В отличие от него, Windows использует 64-битную структуру для FILETIME, что значительно расширяет диапазон допустимых значений.
Документация Windows для структуры SYSTEMTIME указывает, что система способна корректно обрабатывать даты вплоть до 30827 года. Таким образом, выбор начальной точки в 1601 году в сочетании с 64-битным представлением данных позволил инженерам заложить долгосрочный запас прочности, благодаря которому Windows 11 продолжает использовать тот же принцип отсчета, что и ранняя Windows NT.
Почему именно 1601 год?
Важно понимать, что 1601 год не был выбран как дань уважения истории или из-за событий, произошедших в ту эпоху. Для разработчиков Windows NT это был чисто утилитарный выбор, продиктованный необходимостью минимизировать сложность программного кода. Выбор 1601 года позволил инженерам привязать систему к началу 400-летнего цикла григорианского календаря, который был актуален на момент проектирования архитектуры NT (цикл 1601–2000 годов).
Этот выбор избавляет программистов от обработки бесконечного потока исключений, связанных с правилами високосных лет. Поскольку полный цикл из 146 097 дней идеально делится на семь (количество дней в неделе), календарные даты в рамках этого цикла раз за разом приходятся на одни и те же дни недели. Благодаря такой математической элегантности, программному обеспечению не нужно каждый раз «гадать», как вычислить день недели для даты в отдаленном будущем — система просто оперирует повторяющимся циклом.
Особенности файловых систем и точность
Хотя формат FILETIME позволяет системе фиксировать время с точностью до 100 наносекунд, на практике это не всегда означает, что Windows знает «истинное» время события с такой же микроскопической точностью. Здесь кроется важное различие между форматом представления и возможностями хранения данных:

- NTFS: хранит временные метки в UTC с использованием того же 100-наносекундного шага.
- FAT: использует иные форматы, уровни разрешения и логику учета часовых поясов.
Когда прикладное программное обеспечение запрашивает информацию о файле, Windows выполняет конвертацию значений из специфического формата файловой системы в стандартный FILETIME. Таким образом, 100-наносекундный интервал — это лишь «сетка», в которую система пытается вписать данные, даже если сама файловая система физически не фиксирует события с такой детализацией.
Безопасность от «проблемы 2038 года»
Многие опасаются, что выбор столь давней точки отсчета — это закладывание «мины замедленного действия», подобной той, что угрожает системам на базе Unix (где 32-битный счетчик секунд с 1 января 1970 года обнулится 19 января 2038 года). Однако подход Windows кардинально отличается:
- 64-битная архитектура: Использование 64-битного значения для хранения 100-наносекундных интервалов обеспечивает колоссальный «запас хода».
- Масштабируемость: В отличие от 32-битного счетчика, который достигает предела через 68 лет после эпохи, 64-битный формат FILETIME, несмотря на более раннюю точку отсчета, не сталкивается с подобным ограничением в обозримом будущем.
Система не пытается «догнать» историю, она просто использует математически удобный фундамент, который остается актуальным даже спустя три десятилетия после выхода Windows NT. Использование 1601 года как «нулевой точки» (эпохи) выглядит странно лишь до тех пор, пока вы не примените к нему календарную математику — тогда этот выбор становится одним из самых рациональных инженерных решений в истории разработки операционных систем.
Почему это важно: пояснение через API
Важно понимать, как именно эта система работает на уровне интерфейсов программирования. Когда пользователь видит в свойствах файла информацию о том, что он был создан «вчера», система не интерпретирует это как то, что файл существует с эпохи Елизаветы I. На уровне API временная метка представляется просто как огромное число, соответствующее позиции этой даты на временной шкале, начинающейся в 1601 году. Компьютер переводит это число в человекочитаемый формат «15 сентября 2026 года в 14:30» только в тот момент, когда требуется отобразить его в графическом интерфейсе или отчете.
Сравнение с Unix-временем
Разница между подходами Windows и Unix заключается в выборе «точки отсчета» (эпохи). В то время как Unix-время считает секунды от 1 января 1970 года, Windows выбрала стартовую линию почти на четыре столетия раньше. Это фундаментальное различие в архитектурном дизайне: Unix ориентирован на счет целых секунд, тогда как Windows с самого начала заложила в основу 100-наносекундные интервалы, что потребовало создания системы, способной оперировать гораздо более крупными числами для записи актуальных дат.
Реализация через FILETIME
Технически Microsoft определяет FILETIME как 64-битное значение, которое считает количество 100-наносекундных интервалов, прошедших с полуночи 1 января 1601 года по всемирному координированному времени (UTC). Использование UTC здесь критически важно: это означает, что базовая метка времени не зависит от локального часового пояса, в котором находится компьютер. Это исключает путаницу при передаче файлов между системами, настроенными на разное время, так как «нулевая точка» остается неизменной глобальной константой, а не привязывается к местным правилам перехода на летнее или зимнее время.
Осторожность с «устаревшими» решениями
Первоначальная реакция многих инженеров на эпоху 1601 года — опасение, что это очередной «технический долг», который рано или поздно приведет к сбоям. История вычислительной техники приучила разработчиков с недоверием относиться к ситуациям, когда даты и целые числа с фиксированным размером встречаются в одном контексте. Однако в случае с Windows, использование 64-битного представления (вместо знакового 32-битного счетчика, как в случае с проблемой 2038 года) полностью снимает угрозу «кризиса даты» в обозримом будущем. Система спроектирована так, чтобы запас прочности времени был практически неисчерпаемым.






