Good .Net developers should know that a DateTime has a larger range
than a SqlDateTime, and that care needs to be taken when storing
them in databases. For the current project I’m working on, my client
wanted an even bigger data range than .Net allows - for dates going back
to prehistoric times.

After digging around it was clear that .Net had no such support built
into the framework. Using custom date formatting you can retrieve
the Era (AD or BC) by using the “gg” code. Whilst this isn’t actually be
useful for my purposes (since .Net can only go back as far as the year
1) it does provide a safe way to translate this information depending on
your current locale.

After some thought I realised that with the increasing range requirement
of the date, the need for accuracy fell - I could get away with just
storing the year needed for the date. Enter the HistoricalDate class, a
class that stores just the year and era of a date.