Spec-Zone.ru › Ruby 3.4

Юлианский и григорианский календари

Разница между юлианским календарём и григорианским календарём может иметь значение для вашей программы, если она использует даты до перехода.

  • 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–2025 Yukihiro Matsumoto
Licensed under the Ruby License.
Ruby Standard Library © contributors
Licensed under their own licenses.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API