date62¶
Features¶
Compact: 4 ASCII characters for date, 7 characters for datetime
URL safe: uses Base62 encoding
Natural sorting
Semi-human-readable
Covers range from 567-Jan-01 to 3843-Dec-31
Arbitrary sub-second precision
More readable shortcut form for values between 1970-Jan-01 and 2069-Dec-31
Timezone info not supported at the moment
Use cases:
Logging timestamps
Visualize dates on charts
Datetime-based file identifiers
Sub-second-precision string labels
Installation¶
$ pip install date62
$ uv add date62
date or datetime |
Date62 |
|---|---|
2024-Dec-29 |
|
2025-Jan-01 |
|
2025-Jan-01 00:01:02 |
|
2025-Jan-01 00:01:02.345 |
|
2025-Jan-01 00:01:02.345678 |
|
2025-Jan-01 00:01:02.345678012 |
|
2025-Jan-01 00:01:02.345678012345 |
|
Use cases¶
Encode¶
Works for datetime, date, time, int, float, Decimal.
>>> from datetime import datetime
>>> from decimal import Decimal
>>> import date62
>>> d = '2024-12-29 12:34:56.789012'
>>> dtm = datetime.strptime(d, '%Y-%m-%d %H:%M:%S.%f')
>>> date62.encode(dtm)
'WeCTCYu'
>>> date62.encode(dtm, scut=True, prec=2)
'24CTCYuCj0C'
>>> date62.encode(dtm.date(), scut=True)
'24CT'
>>> date62.encode(dtm.time())
'CYu'
>>> date62.encode(dtm.time(), prec=3)
'CYuCj0C00'
>>> t = '1735468496.789012345678'
>>> date62.encode(Decimal(t), scut=True, prec=4)
'24CTAYuCj0C5ZAw'