how I have a simple question. I need to convert a date in string format to a number:
time = '2014-03-05 07:22:26.976637+00:00'
type(time)
str
I would like to convert this date to a unique number
Thank you.
In Python 3.7+:
>>> from datetime import datetime
>>> datetime.fromisoformat('2014-03-05 07:22:26.976637+00:00').timestamp()
1394004146.976637
There are two steps:
#!/usr/bin/env python
from datetime import datetime
time_str = '2014-03-05 07:22:26.976637+00:00'
utc_time = datetime.strptime(time_str[:26], '%Y-%m-%d %H:%M:%S.%f')
assert time_str[-6:] == '+00:00'
from datetime import datetime, timedelta
epoch = datetime(1970, 1, 1)
def timestamp_microsecond(utc_time):
td = utc_time - epoch
assert td.resolution == timedelta(microseconds=1)
return (td.days * 86400 + td.seconds) * 10**6 + td.microseconds
print(timestamp_microsecond(utc_time))
# -> 1394004146976637
The advantage is that you could convert this unique number back to the corresponding UTC time:
utc_time = epoch + timedelta(microseconds=1394004146976637)
# -> datetime.datetime(2014, 3, 5, 7, 22, 26, 976637)
Follow the links if you need to support arbitrary utc offsets (not just UTC time).
If you need to accept a leap second as the input time; see Python - Datetime not accounting for leap second properly?
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With