Germey
5/25/2019 - 6:00 PM

time_attr

from time import strptime

import datetime
import cattr
from dateutil.tz import tzutc
from attr import attrs, attr

TIME_FORMAT = '%Y-%m-%dT%H:%M:%S.%fZ'


@attrs
class MyRecord:
    a_string: str = attr()
    a_datetime: datetime.datetime = attr()


converter = cattr.Converter()
converter.register_unstructure_hook(datetime.datetime, lambda dt: dt.strftime(TIME_FORMAT))
converter.register_structure_hook(datetime.datetime, lambda string, _: datetime.datetime.strptime(string, TIME_FORMAT))

my_record = MyRecord('test', datetime.datetime(2019, 5, 25, 14, 49, 12, 950604, tzinfo=tzutc()))

r = converter.unstructure(my_record)
print(r)
s = converter.structure(r, MyRecord)
print(s)