I use the GEDCOM definition of dates. I think they did a pretty good job of thinking dates through and including much of what is needed.
I recently wrote a blog post about GEDCOM dates. Some of what I said was:
The basic date in GEDCOM is like this: dd MMM yyyy, e.g. 02 JUL 1917.
Some things to know about that basic date: You can list either “day
month year”, or “month year” or “just the year”. The day can be 1 or 2
digits, so 02 JUL 1917 or 2 JUL 1917 are allowed.
For approximate dates, they use:
- ABT date
- CAL date
- EST date
where ABT means “about” and is for inexact date. CAL is calculated mathematically, e.g. from an event date and age, and EST is estimated based on an algorithm using some other event date.
There are a bunch of other constructs as well, including interpreted dates and date phrases.
Since you'll most likely want your genealogy application to import from GEDCOM and export to GEDCOM, you may want to decide on some date implementation that will be easy to translate to/from the GEDCOM format.