| Maybe the most awesome part of being a human being today is recycling solutions from the past to the solutions of today. Once upon a time, written language was represented in computers by arrays of characters. Manipulating non-english user content in this model was big pain. Today, effective software dealing with written language uses UTF-8 Characters and the Grapheme abstraction. The problem was solved by separating the concepts of Bytes, Characters and Graphemes, which were previously conflated. Clearly, it's ineffective to use the same abstraction for "elapsed time" and "time of day" due to the variable length of the day. Representing both concepts with one value leads to the problems described in this article. The concepts should be separated and a new abstraction created: Earth Position (EP). Statements about the time of day, day of the week or lunar month of the year are really statements about the Earth's position relative to some other entity: the sun in most cases, but sometimes the moon in the case of lunar dates. Given that "Unix time" is widely understood as "the number of seconds elapsed since Jan 1, 1970", it would be convenient to let it only represent Elapsed Time and define Earth Positional values in terms of Elapsed Time. The leap second concept should only affect applications interested in Earth Position queries (time of day, etc) and not have any representation at the Elapsed Time level. |
TAI: http://en.wikipedia.org/wiki/International_Atomic_Time
UTC: http://en.wikipedia.org/wiki/Coordinated_Universal_Time
"As of 1 January 2011, 00:00:00 UTC, TAI was exactly 34 seconds ahead of UTC"