Julian and Gregorian Calendars

The difference between the Julian calendar and the Gregorian calendar may matter to your program if it uses dates before the switchovers.

  • October 15, 1582.

  • September 14, 1752.

A date will be different in the two calendars, in general.

Different switchover dates

The reasons for the difference are religious/political histories.

  • On October 15, 1582, several countries changed from the Julian calendar to the Gregorian calendar; these included Italy, Poland, Portugal, and Spain. Other countries in the Western world retained the Julian calendar.

  • On September 14, 1752, most of the British empire changed from the Julian calendar to the Gregorian calendar.

When your code uses a date before these switchover dates, it will matter whether it considers the switchover date to be the earlier date or the later date (or neither).

See also a concrete example here.

Argument start

Certain methods in class Date handle differences in the Julian and Gregorian calendars by accepting an optional argument start, whose value may be:

  • Date::ITALY (the default): the created date is Julian if before October 15, 1582, Gregorian otherwise:

    d = Date.new(1582, 10, 15)
    d.prev_day.julian? # => true
    d.julian?          # => false
    d.gregorian?       # => true
    
  • Date::ENGLAND: the created date is Julian if before September 14, 1752, Gregorian otherwise:

    d = Date.new(1752, 9, 14, Date::ENGLAND)
    d.prev_day.julian? # => true
    d.julian?          # => false
    d.gregorian?       # => true
    
  • Date::JULIAN: the created date is Julian regardless of its value:

    d = Date.new(1582, 10, 15, Date::JULIAN)
    d.julian? # => true
    
  • Date::GREGORIAN: the created date is Gregorian regardless of its value:

    d = Date.new(1752, 9, 14, Date::GREGORIAN)
    d.prev_day.gregorian? # => true