Datetime to fixed hash. Shortable for lower precision
Project description
HashDate
Turns Python datetimes (or iso dates with cli) into hashes.
The hashes support shortening to reduce precision, so a prefix of a hash will be the same datetime rounded to the given hashlength.
Cli usage
Check out the demo:
$ hashdate demo
Its full of colors:
Turn your iso date into a hash:
$ hashdate date2hash 2020-05-13T22:30:47.136450
hash: UCABCBDCCDAEHBDGEFA
Then if you only take the first 11 chars you get a datetime with less precision:
$ hashdate hash2date UCABCBDCCDA
datetime: 2020-05-13T22:30:00
you can also secify to use emojis for charset if you want to:
$ hashdate date2hash 2020-05-13T22:30:47.136450 -c emoji
hash: ๐น๐ฒ๐ผ๐ฅ๐ฒ๐ฅ๐ฒ๐ฒ๐ฒ๐ฒ๐ผ๐๐๐ฅ๐ฒ๐ด๐๐๐ผ
and back again:
$ hash2date ๐น๐ฒ๐ผ๐ฅ๐ฒ๐ฅ๐ฒ๐ฒ๐ฒ๐ฒ๐ผ๐๐๐ฅ๐ฒ๐ด๐๐๐ผ -c emoji
datetime: 2020-05-13T22:30:47.136450
Module usage
import datetime
from hashdate import datetime_to_hash, hash_to_datetime
now = datetime.datetime.now()
hash = datetime_to_hash(now)
dt = hash_to_datetime(hash)
assert now == dt
Advanced
Use emojis:
import datetime
from hashdate import datetime_to_hash, hash_to_datetime
now = datetime.datetime.now()
hash = datetime_to_hash(now, charset='emoji')
dt = hash_to_datetime(hash, charset='emoji')
assert now == dt
Register more charsets:
import datetime
from hashdate import register_charset, datetime_to_hash, hash_to_datetime
charset = "๐ผ๐ฅ๐ฒ๐ฒ๐๐๐ด๐๐๐บ๐๐ฝ๐๐ฆ๐๐ฑ๐ซ๐๐๐๐น๐โ๐ฟ๐ฅ๐ช๐ท๐ต๐ฅ๐ท๐ณ๐ถ๐ฅ๐๐๐๐ต๐ป๐ฝ๐ข๐๐๐ฎ๐๐๐ฅ๐ฐ๐๐๐ง๐๐๐ฎ๐ธ๐๐๐๐๐ฅ๐๐ฅ๐ญ๐ธ๐"
register_charset('my_emojis', charset)
now = datetime.datetime.now()
hash = datetime_to_hash(now, charset='my_emojis')
dt = hash_to_datetime(hash, charset='my_emojis')
assert now == dt
Structure of a hashdate
centenial: [...19,20,21...]
| quarter start month: [0,3,6,9]
| | day in tens: [0:3]
| | | hour in tens: [0:5]
| | | | minute in tens: [0:5]
| | | | | second in tens: [0:5]
| | | | | | microsecond digits:[0:999999]
| | | | | | |
U CA B C B D C B A F C E BCDAAB
| | | | | |
| | | | | second: [0:9]
| | | | minute: [0:9]
| | | hour: [0:9]
| | day: [0:9]
| month in quarter: [0,1,2]
year: [0:99]
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file hashdate-1.0.3.tar.gz.
File metadata
- Download URL: hashdate-1.0.3.tar.gz
- Upload date:
- Size: 6.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.5 CPython/3.7.3 Darwin/19.0.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a6884148b905f2b6b09706d47d17db1bd6b1609dd909b2e9da21107841ad6158
|
|
| MD5 |
c6d695c74c0db74b1c1c3bd694b889b9
|
|
| BLAKE2b-256 |
ca2548a7439c035e74b28eb859943d2d1c508670f4dad1bbca5eb09b7391a9c5
|
File details
Details for the file hashdate-1.0.3-py3-none-any.whl.
File metadata
- Download URL: hashdate-1.0.3-py3-none-any.whl
- Upload date:
- Size: 7.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.0.5 CPython/3.7.3 Darwin/19.0.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5f786cebf908bc4adf4296050bff249e35821dd2390f109d14bbf389e576bc01
|
|
| MD5 |
81e98c6f3e18fd2998710aea730ecde3
|
|
| BLAKE2b-256 |
4a1b6bd9a36df4d4ec7df6ecf80722018e3eb2afa6ac5f38c7db288eec63c068
|