Это не просто NTFS; Внутреннее хронометраж Windows выполняется с использованием того же формата времени и с тем же началом эпохи.
Они знали, что им нужно 64-разрядное двоичное значение времени, поскольку уже известно, что исходное 32-разрядное значение Unix является тупиком (эти счетчики будут перенесены в 2038 г.), а 64-разрядные значения времени уже использовались в VMS. 64 бита дают возможность считать около 18 миллиардов миллиардов различных значений времени. Ну, на самом деле, только 9 миллиардов миллиардов, потому что значения времени с установленным старшим битом имеют другое значение в Windows (как и в VMS). Таким образом, у нас действительно есть «только» 63 бита для подсчета даты и времени суток.
В то время как 32-битное время Unix считалось только секундами, временные метки Windows считаются с шагом 100 наносекунд. Таким образом, значение времени 1 означает 100 нс после полуночи 1 января 1601 года.
Но зачем выбирать такую «историческую» дату?
Ну, во-первых, это немного облегчает расчеты дня недели и аналогичные вычисления, поскольку это был первый год самого раннего 400-летнего цикла, который включал в себя электронные компьютеры любого рода. По этой причине существует весьма авторитетная поддержка .
Тем не менее, я должен предположить, что в контексте современных вычислений дополнительные вычислительные мощности, необходимые для того, чтобы справиться с другим начальным годом, были бы довольно малы в контексте.
1 января 1601 года также считается датой, с которой подсчитываются даты ANSI. Таким образом, «дата Windows» - это тот же номер дня, что и «дата ANSI», что упрощает работу в разных местах.
Он также был стандартизирован как «год 1» григорианского календаря (хотя этот календарь не был принят повсеместно в то время).
Для практической, рабочей причины, однако, рассмотрим: этот формат даты / времени позволяет представлять исторические дату / время, например, в базах данных, наряду с современными, используя тот же формат. Например, в генеалогической базе данных могут храниться даты рождения и смерти ваших предков, начиная с 400 с лишним лет, что намного дольше, чем большинство таких записей существует в надежной форме.
Не было бы смысла расширять это ранее, начиная, скажем, с 1201 года или даже с 1, из-за перехода между юлианским и григорианским календарями, который начался в некоторых странах в 1582 году и продолжался вплоть до 1926 года, в зависимости от того, в какой стране вы находитесь. были в. Все даты, записанные в формате времени ANSI и, соответственно, в «двоичном» формате времени Windows, считаются григорианским календарем.
Кстати, VMS использует аналогичную схему, но ее базовое время - 17 ноября 1858 года. Смитсоновская астрофизическая обсерватория выбрала этот стандарт в качестве «базовой даты» для спутникового слежения; это было связано с более ранним использованием астрономами оригинальной схемы Юлианского дня, которая насчитывает дни с полудня, 1 января 4713 г. до н.э. По этой схеме 17 ноября 1858 г. выходит в Модифицированный юлианский день номер 2 400 000. Используя MJD вместо JD, они смогли уместить современные даты в 18 бит, что было важным подвигом в то время. Подробности смотрите в этой статье от VMS Engineering.