Подтвердить что ты не робот

Каково значение 1 января 1601 года?

Эта структура представляет собой 64-битное значение, представляющее число из 100-наносекундных интервалов с 1 января 1601 года.

Ссылка: http://msdn.microsoft.com/en-us/library/aa915351

Почему он установлен с 1601 года? Почему не время unix 1970 или даже 2000? Что я могу сделать с совместимостью столь далеких дат?


Отвечая на вопрос.

Дата ANSI определяет 1 января 1601 года как день 1 и используется как начало целочисленных дат COBOL. Эта эпоха является началом предыдущего 400-летнего цикла високосных годов в григорианском календаре, который закончился в 2000 году. как вы можете найти в википедии в записи Julian_day.

Далее:

4b9b3361

Ответ 1

Потому что 1 января 1601 года было начало эпохи.

Возьми это у Раймонда Чена:

Почему эпоха Win32 1 января 1601 года? 🕗

Структура FILETIME записывает время в виде интервалов в 100 наносекунд с 1 января 1601 года. Почему была выбрана эта дата?

Григорианский календарь работает по 400-летнему циклу, и 1601 год - это первый год цикла, который был активен во время разработки Windows NT. Другими словами, это было выбрано для того, чтобы математика получилась красивой.

На самом деле у меня есть электронное письмо от Дейва Катлера, подтверждающее это.

Ответ 2

Ну, 1 января 1601 года был первый день 17-го века. И маятниковые часы были изобретены в 17 веке, позволяя измерять время до 1 секунды точности. Таким образом (теоретически) могут существовать ссылки в существующих литературе с этого периода на время, измеренное с такой точностью.

Но на самом деле выбор произволен. Должна быть "эпоха", и при условии

  • эпоха достаточно далеко назад, что значения "отрицательного времени" встречаются редко, а

  • время оборачивания достаточно далеко в будущем, чтобы быть в нескольких поколениях,

любой выбор сделает.

Но, если это вас так волнует, отправьте письмо Стиву Бальмеру.


Я склонен поверить в ответ Иэна Бойда. И причина в том, что он упрощает математику (для расчета графологического года). Учитывая, насколько крошечным это упрощение и насколько слабые рассуждения позади него, это (ИМО) "по существу" произвольно. (Не то, что я говорю, что это неправильно...)

Ответ 3

Его прагматичный выбор.

Современный западный календарь не был последовательным до 1752 года, когда Великобритания (и ее колонии) приняла григорианский календарь, который был принят в большинстве католической Европы с 1582 года.

Это современный календарь с високосными годами и т.д., чтобы сохранить 1 января в соответствии с зимним солнцестоянием.

Так почему бы не начать с 1 января 1752 года? Потому что правило основного високосного года "Его високосный год, если двузначный год делится на четыре, за исключением того, что четырехзначный век также делится на четыре" ) установил 400-летний цикл. Первый полный цикл, начинающийся 1 января 1601 года (по крайней мере, в Риме).

Расчет високосного года и даты является достаточно болезненным, не начиная с середины четырехсотлетнего цикла, так что 1600 - это довольно хорошее начало, если вы помните, что любые даты до 1752 года должны быть квалифицированы по географическому положению, как британские даты были в течение 10 дней не синхронизированы. с римскими датами к этому времени.

Ответ 4

Как уже упоминалось, я считаю, что популярный ответ объясняется тем, что григорианский календарь работает на 400-летнем цикле, а 1601 - первый год цикла, который был активен в то время, когда разрабатывалась Windows NT.

Январь 1, 1601 - это начало целочисленных дат COBOL.

Это также день 1 по формату даты ANSI.

И если вы спекулируете далее в соответствии с ISO8601, который является форматом, в котором он находится, до 1583 года был основан на прорептическом григорианском календаре, который имеет 366 дней в году. Возможно, они просто округлились до следующего столетия.