This section attempts to explain how the HistoryCal program looks at calendar schemes in general and how the HistoryCal script language can be used to define new schemes.
The HistoryCal library has, at its heart, the ability to work with a number of basic calendar schemes. These calendars can be used directly, or they may used to create variants as described below.
Some Base calendars available are:
- Julian. The base for the Julian calendar variants.
- Gregorian. The modified Julian calendar used world wide.
- Hebrew. The calendar used by Jewish communities.
- Islamic. A tabular version of the calendar used by Muslim communities.
- Julian Day Number. A day count calendar used internally by HistoryCal.
These calendars describe a particular day by means of a record comprised of fields holding the various date elements. There are also optional fields which may be included when required.
All the fields in a record can be refered to by their given or alias names.
Calendars normally have two separate parts to their definitions. There is the definition that describes how the days are counted within the year, then there is the method of counting those years. One common occurrence is that different calendar schemes may use the same method to count the days with the year but very different ways of counting the years. The year count may start at any point of the year, not just the point normally considered the start of the year (New Years Day).
For instance, when Julius Caesar introduced the Julian calendar, New Years Day was considered to be 1st January. However, not all calendar systems increased the year count on this day. When the AD (Anno Domini) Julian calendar was first used, the year change occurred on the 25th December. Later, many other dates were used, for instance, 25th March, the Feast of the Annunciation.
We can also use the shift variant to change the era, even if the year change remains the 1st January, as with the Spanish Era calendar. It will also work with day count calendars, to create day count calendar that starts at a different date, such as the Modified Julian Day calendar.
When an authority changes from calender system to another, and where the underling system is the same, we can create a hybrid calender. This occurred quite often with the Julian and Gregorian calenders. Not only do they switch between them, they may also change the year count change date.
In order for a hybrid calendar to be useful, the change over must occur in an organised way, on a particular day. But where it is possible, a hybrid calendar can simplify things.
The hybrid calendar has the appearance of adding or removing days from the calender. On the occasions that days are added, this produces an ambiguity. When one of these ambiguities occurs, entering a date produces two possible results. An additional element is required to indicate the required day, for example, the scheme being used. Alternatively, something like the day of the week can be added.
A common method of numbering the years in a calendar is to number them from the start of the reign of a monarch or official. Such calendars are still in use today.
A calendar based on this system is really a sequence of shifted calendars, the era of each based on the start of the reign. It also allows the specification of the date range covered by each era. These ranges may overlap or have gaps, a default calendar is defined to be used outside of these ranges.
The project is still under development, and the following calendar variants are being considered.
With some calendars, a particular authority is used to decide on the calendar elements and so a standard conversion is not possible. The Islamic observation calendar based on the appearance of the crescent moon is such a calendar.
It is possible to create a calendar accurate to within a day or two and this may be sufficient. But it may be possible, for instance, where the day of the week and calendar day is known, to improve the accuracy by adding a correction table.
This is similar to the above, but where the error may be quite large and there is little hope of improvement. An example would be the early Roman calendar. In this variant, a series of ranges with a suggested error would be included. Dates would translate to a range, but would include a field so when translating back, the system knows to remove the error range.
A multi calendar is where two or more calendars are used together but unlike a hybrid calendar, they do not have to be similar. When formatting a multi-calendar, any element from any of the calendars may be used.