When storing Gregorian and Julian dates, we currently normalize them to an ISO-style timestamp format, something like +2015-05-05T00:00:00Z. However, it is unclear how years BCE should be represented. We currently represent 44 BCE as -0044 internally (the year 0 is accepted as input, but has no clear meaning); this is in conflict with ISO 8601, which states that +0 should be used to represent 1 BCE, and -0043 should be used to represent 44 BCE.
We should decide whether we want to continue to use "traditional" year numbering internally, or switch to "astronomical" (ISO) year numbering.
Either way, a lot of the data we currently have internally may actually be incorrect, depending on how it was provided:
- If a date was entered as "March 15 44 BC", it would currently be represented as -0044-03-15T00:00:00Z. This is consistent with the traditional numbering system.
- If a date was given in ISO format as "-0043-03-15", it would currently be stored internally unchanged as -0043-03-15T00:00:00Z. This would be wrong if we assume the internal timestamp uses traditional numbering, but the input used ISO format.
By looking at the database, we cannot know which timestamps were created from ISO input. Also, when looking at ISO style input, we do not know which numbering system is meant.
- finalize the decision on the internal form, and clearly document it.
- alert users who enter negative year numbers (as opposed to using AD/BC notation) in the UI.
- revise all dates with negative years currently in the database.