You're filling a personal injury insurance claim: When did injury start? is easy, but what if you're still getting treatment? What do you put in the finish date box? D/a/y lets you put 'not yet' which is the only accurate answer. (And D/a/y also knows how to do calculations using that value.)
When did you have a particular vaccination? How are you with YY/MM/DD for 30-ish years ago? Depending on the application a guessed year or Not-known or A long time ago might be appropriate.
Your project is delayed a month so how do you add one month to Jan 31st? (2015 or 2016) D/a/y has a clear specification for the slippery and elastic matter of months.
17th September is a real world date, your birthday perhaps. Talking of birthdays, when is the new baby due?
Don't use Javascript Date unless you need time as well, and even then you're still probably better-off mostly using D/a/y
Year, month and day or year and month or just a year | |
We simply don't know. (Not the same thing as | )|
We've found some logical error. (Not the same thing as | )|
We don't have data going back beyond a certain point | |
Ongoing. A very common pattern in real-world applications | |
A month or a month and a day. Start of tax years for example | |
Numeric values of days, months and years used when comparing or shifting days | |
Something went wrong with calculations |
How old are you? | Today - 18 October 1960 | You could be tempted to use Javascript Date to do this sum... Oh but you've got a number of milliseconds which you now need to convert to
years months and days. Using Day you'll do something like var age = dToday.Difference(dBorn); then age.ToString() for + 44y 6m 12d |
How old are you? | Today - 1960 | Oh dear! 1960 is a real-world date but we've got two problems. (1) Trying to do this with Javascript means coercing '1960' to '1 Jan 1960' (2) Then it gives us a result with false (day) precision. Day would subtract 1960 from 2015 say and report that it had an answer only accurate to years. |
How long since you left school? | Today - June 1978 | Clearly without a day we're only able to calculate to monthly precision. That's no problem for Day |
How long since the battle of Hastings? | Today - 1066 | Similar problem. Day will tell us 949 years |
How long was/is your arm in plaster? | Today - 12 June 2015 | The 'Today' value is a very common input. In this case we can do a simple sum with 'Today' meaning 'so far'. |
What is 31st January 2015 plus one month? | Shennanigans! | 28 Feb 2015 |
What is 28th January 2015 plus one month? | Shennanigans! | 27 Feb 2015 |
When is the end of the tax year? | 4th April | No year! We call this a floating date. Happy birthday! |
How are D/a/ys stored? | 32-bit integers or easy translations to database or Javascript dates |
What about internationalisation? | Easy to edit dictionaries are part of the Day architecture |
What are limits? | 4095 BC to 4095 AD |
Is it tested? | There's a test suite available for download. |
Is it free? | Yes |
Is it available? | Probably late summer 2015 |