Юлианский и григорианский календари
Различие между юлианским календарем и григорианским календарем может быть существенным для вашей программы, если она использует даты до перехода.
-
15 октября 1582 года.
-
14 сентября 1752 года.
В общем случае дата будет отличаться в этих двух календарях.
Разные даты перехода
Причины различий кроются в религиозной и политической истории.
-
15 октября 1582 года несколько стран перешли от юлианского календаря к григорианскому; к ним относятся Италия, Польша, Португалия и Испания. Другие страны в западном мире сохранили юлианский календарь.
-
14 сентября 1752 года большинство стран Британской империи перешли от юлианского календаря к григорианскому.
Когда ваш код использует дату до этих дат перехода, важно, будет ли она считать дату перехода более ранней или более поздней (или ни той, ни другой).
См. также конкретный пример здесь.
Аргумент start
Некоторые методы в классе Date обрабатывают различия в юлианском и григорианском календарях, принимая необязательный аргумент start, значение которого может быть:
-
Date::ITALY (по умолчанию): созданная дата — юлианская, если до 15 октября 1582 года, и григорианская в противном случае:
d = Date.new(1582, 10, 15) d.prev_day.julian? # => true d.julian? # => false d.gregorian? # => true
-
Date::ENGLAND: созданная дата — юлианская, если до 14 сентября 1752 года, и григорианская в противном случае:
d = Date.new(1752, 9, 14, Date::ENGLAND) d.prev_day.julian? # => true d.julian? # => false d.gregorian? # => true
-
Date::JULIAN: созданная дата — юлианская независимо от ее значения:
d = Date.new(1582, 10, 15, Date::JULIAN) d.julian? # => true
-
Date::GREGORIAN: созданная дата — григорианская независимо от ее значения:
d = Date.new(1752, 9, 14, Date::GREGORIAN) d.prev_day.gregorian? # => true
Ruby Core © 1993–2024 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.