The current plan for Atlas's calendar system consists of the following:
a) the user may choose to use the Gregorian calendar, OR:
b) the user may specify their own calendar with the following features:
- a single repeating week,
- the names of the days of the weeks,
- a series of months (each with names and lengths),
- years are assembled by specifying a list of months (e.g. for Gregorian, there are two years, distinguished by which version of February they use)
- a year cycle, consisting of several years (e.g. for Gregorian, 3 normal years followed by 1 leap year)
- named years and eras
- special "one-shot" years or rare recurring years—this would be a uniform way of implementing both intercalation and skipped leap years
- as many independent calendars as you want, for e.g. religious calendars that are separate from natural calendars, or for handling changes in calendar systems
- holidays based on a date (e.g. "dec. 25th"), a week day within a month (e.g. "first tuesday in smarch"), or a weekday within a month relative to another holiday (e.g. "first tuesday in april after the new moon", where "the new moon" is a recurring event defined using a separate lunar calendar)
This leaves me with the following questions:
1. Does anyone use the Julian calendar on their alt-earths (or elsewhere)? What about other real-world calendars? (These could be implemented directly just like the Gregorian calendar.)
2. Does anyone use a non-repeating series of year lengths and month configurations? (If so, I hate you, but I'll do what I can.) 3. Does anyone have a con-calendar with a realistic leap year correction (e.g. "skip a leap year every 400 years" and other obscurities of the Gregorian system)?
4. What kinds of nasty holiday date calculations do you use? Anything worse than Easter?
When this is all done, you'll be able to specify dates for events (with any specificity) and see them assigned appropriately to a well-structured, good-looking calendar chart, as well as recurring holidays, so working out the logic for this is important.