date62

todo: project description

license pypi python versions tests coverage tested with multipython uses docsub mypy uv ruff openssf best practices

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

24CT, WeCT

2025-Jan-01

2511, Wf11

2025-Jan-01 00:01:02

2511012, Wf11012

2025-Jan-01 00:01:02.345

25110125Z, Wf...

2025-Jan-01 00:01:02.345678

25110125ZAw, Wf...

2025-Jan-01 00:01:02.345678012

25110125ZAw0C, Wf...

2025-Jan-01 00:01:02.345678012345

25110125ZAw0C5Z, Wf...

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'