Another option, getting tzinfo
from the standard library since Python 3.2 (for older Python versions you can get if from pytz
):
>>> import pytz
>>> from datetime import datetime, timedelta, timezone
>>> epoch = datetime(1601, 1, 1, tzinfo=timezone.utc)
>>> cookie_microseconds_since_epoch = 13022344559000000
>>> cookie_datetime = epoch + timedelta(microseconds=cookie_microseconds_since_epoch)
>>> str(cookie_datetime)
'2013-08-29 13:55:59+00:00'
I assume that the difference to your expected value is the timezones offset.
Update:
As @J.F.Sebastian correctly points out, if you are using implicit UTC naive datetime
objects, tzinfo
is redundant and the above can be simplified to:
>>> from datetime import datetime, timedelta
>>> epoch = datetime(1601, 1, 1)
>>> cookie_microseconds_since_epoch = 13022344559000000
>>> cookie_datetime = epoch + timedelta(microseconds=cookie_microseconds_since_epoch)
>>> str(cookie_datetime)
'2013-08-30 13:55:59'