|
|
|
|
Reforming and standardising date representation and methods Imagine that we only had integers to use as numbers, no zero and they only went up to to say 2037. That's exactly the situation we're in now with the way we represent dates in computers today.More basically a date based on say seconds can't even represent "June 2009" and "2009" let alone "Not yet" and "don't know". So many seconds since 00:00 on 1st Jan 1970, ie the way 'UNIX timestamps' work isn't capable of representing "2005", "January 2005", "Not known", "Some time in the past"or "May". Even "4th January 2005" can only be represented by ignoring the seconds past midnight bit. The world is full of computers and databases that can't represent many people's retirement dates - anything past 2038! The purpose of this project is to establish
|
|
|
On this form we see some partial dates mixed with specific dates. "1994" may be as
accurate as the information is available (and required) but this doesn't mean
"Midnight on the 1st of January 1994". The applicant is currently employed which
means we need some representation in our date system for 'In the future'. Note that
the date available is quite properly being given as an approximation. If the applicant
didn't have to give any notice do we have a way to represent 'Now'? If we wanted these dates as anything other than text then we're stuck |
||||||||||||||||||||||||
| Model | 32 bit representation | Methods | Interface | Developers | |||||||||||||||||||||||
|
|
|
Support for internationalisation is built into the method specification. This allows
programmer defined switching between locales
|
As of June 2009 these specifications exist 'on paper' in a lot of detail. The objective is to have
libraries to implement the specifications off-the-shelf for whatever language you fancy.
My job is to clarify the 'what' which I think I'm quite good at, but I'm getting too old to write tight production code to do the 'how'. This is where some hard-core programmers are needed to get some code into the hands of application developers so we can iron out useability wrinkles. I have written a prototype and harness (in Delphi/Pacsal) which I'm using to fully investigate the library API - But it only happens in fits and starts so some encouragement would be most welcome.
|
| Questions | Real world example |
|
|
| A little bit of background | More details | ||
|
I've been using a version of this for over a decade. I needed something that would sort, consume a small
database footprint, and be able to deal with vague, unknown and 'before we started counting' and 'some unknown
time in the future'. It is something that was easy to write, and gives so much flexibility. One joy is being
able to give the user the opportunity to type in T for 'today', B for 'Beginning of time',
E for 'End of time', and U for 'Unknown'. A database of authors can now happily accept
real-world values for their dates of birth, death (many are still alive) and dates of publication.
The UNIX timestamp problem is a time-bomb. If you want timestamp features such as logging then an overflow/wraparound in 2038 isn't too much of a problem but if the applications you use have it embedded then you could end up in trouble very soon. Although I'm clear this is not about textual date representation (there's already a standard for that), internationalisation is an issue that needs to be dealt with if any formatting and interaction is to be applied. For example error messages and allowed abbreviations extend 'normal' date internationalisations. That's why there's an add-on appendix system to configure input and output details. In times past I could have written a reference version in say Java but the advance of years means that I'm not as deft as I used to be and would rather leave that task to someone else. Do have a look at the overview, and if you have thoughts or would like to contribute then get in touch.
Peter Fox |
|