36 conveniently has many divisors. base 36 can be written with characters 0..9, a..z.
(using both letters and numbers has the standard problems of letters and numbers which look alike, and spelling out profanities. we ignore these problems.)
consider dividing a day into 36. (previously, other sizes.)
1/36 day = 40 minutes
1/36^2 day = 1/1296 day ~= 66.666 second
1/36^3 day ~= 1.85 s
1/36^4 day ~= 1/19 s
1/36^5 day ~= 1/700 s
use only the precision you need. 40 minutes might be precise enough for many applications.
start with a standard 12 hour analog clock but use a different face, dividing the circle into 18 instead of 12. each point has two letters: 0..h, i..z . omit some letters if it is too busy (much like clocks which only mark 12, 3, 6, 9). i, 3L, 6o, 9r, cu, fx might be nice: 6 wedges 2 hours each. remove the minute and second hands.
dates are only vaguely connected to base 36:
day of month: 1..31 = 1..v
month of year: 1..12 = 1..9,a,b,c
year: abandon base 36 entirely. Holocene Era in base 10, modulo 10^n, with only as many rightmost digits as needed (more significant digits assumed by context). 0 digits (omitting year entirely) or 1 (year of decade) might be enough for many applications.
dates expressed big endian. some separator character between year and rest of date. time zone specified separately. ignore leap seconds.
sorting years between 9 and 0 is annoying, but perhaps weirdness happens in a brief window only once every 10 years. perhaps interpret 0 (or 00 etc.) as the closer one; interpretation rollover happens at 5.
2021-12-31 23:20 = 1.cvz
October 29, 6:59:38.1 PM = .assho69
goal is a compact sortable string representation of a date for timestamps that a human has a chance at being able to mentally convert to conventional date and interpret as a portion of a day (in contrast to Unix time).
No comments :
Post a Comment