The CalCalcs routines recognize the following calendars.

 

Standard


This is our standard civil calendar as we use it today. It is a "mixed" calendar, in that historically, we transitioned from the Julian calendar to the Gregorian calendar at some date in the past. The exact transition date varied by country and region -- see below. The CalCalcs routines are intended to provide a correct treatment of this transition date.

Since the standard calendar uses the Julian calendar before 1582 A.D., the standard calendar never includes a "year 0" (since the Julian calendar never includes a year 0).

This calendar is selected by passing the string "Standard" to routine routine ccs_init_calendar(). The passed string is not case-sensitive.

If "Standard" is specified, a transition date of 15 October, 1582 is used. The transition date is the first day that the Gregorian calendar was used. Prior times dates use the Julian calendar. As a further convenience, a specific region or country's transition date can be used by appending an underscore and two-letter country/region code to "Standard". For example, "Standard_UK" indicates a calendar with a transition date of 14 September 1752, as was used by the United Kingdom and its colonies (including the United States, at the time). A list of recognized country/region codes can be seen here.

 

Julian


The structure of the Julian calendar, with leap years every fourth year, was introduced by Julius Caesar in 46 B.C. The numbering of the years that we use today was devised by later European theologians.

The Julian calendar implemented here is technically a "proleptic Julian" calendar, which simply means that it has been extended back to 4713 B.C. The historical Julian calendar as commonly used does not include a year 0, and the CalCalcs routines follow this practice. The routines will return an error if given a date with year 0 in the Julian calendar.

When suppyling the calendar name to routine ccs_init_calendar(), either "Julian" or "proleptic_Julian" will end up using this calendar. Also, the passed string is not case-sensitive.

 

Gregorian


This is the calenadar established by Pope Gregory XIII in 1582. It is a minor modification to the Julian calendar.

The Gregorian calendar implemented here is technically a "proleptic Gregorian" calendar, which simply means that it has been extended back to 4713 B.C. In extending the Gregorian calendar back to years before it actually existed, you have to decide how to treat "year 0". Feel free to read the Wikipedia articles on the proleptic Gregorian calendar and year 0 if you want to make your head hurt.

The Gregorian calendar implemented here does not include a year 0. The CalCalcs routines will return an error if given a date with year 0. If you want a (proleptic) Gregorian calendar that includes year 0, use the "Gregorian_Y0" calendar instead.

When suppyling the calendar name to routine ccs_init_calendar(), either "Gregorian" or "proleptic_Gregorian" will end up using this calendar. Also, the passed string is not case-sensitive.

 

Gregorian with "Year 0"


This is a Gregorian calendar that includes a year "0" falling between year -1 and year 1.

When suppyling the calendar name to routine ccs_init_calendar(), either "Gregorian_Y0" or "proleptic_Gregorian_Y0" will end up using this calendar. Also, the passed string is not case-sensitive.

 

Noleap calendar


This is a calendar with a fixed 365 days per year. I.e., it is like our standard calendar but has no leap years. Many climate models use this calendar. This calendar always has a year 0.

When suppyling the calendar name to routine ccs_init_calendar(), either "noleap", "no_leap", or "365_day" will select this calendar. Also, the passed string is not case-sensitive.

 

360_day calendar


This is a calendar with a fixed 360 days per year, with 30 days in each of 12 months. There are a couple (old) climate models that use this calendar. This calendar always has a year 0.

When suppyling the calendar name to routine ccs_init_calendar(), "360_day" will select this calendar. The passed string is not case-sensitive.




(C) 2010 David W. Pierce