Вы также можете использовать реализацию Django .На самом деле я бы предпочел это и использовать что-то другое, только если парсер Django не может обработать формат.
Например:
>>> from django.utils.dateparse import parse_datetime
>>> parse_datetime('2016-10-03T19:00:00')
datetime.datetime(2016, 10, 3, 19, 0)
>>> parse_datetime('2016-10-03T19:00:00+0200')
datetime.datetime(2016, 10, 3, 19, 0, tzinfo=<django.utils.timezone.FixedOffset object at 0x8072546d8>)
Чтобы преобразовать его в правильный часовой пояс, когда ни один не известениспользуйте make_aware из django.utils.timezone
.
Так что в конечном итоге ваша утилита парсера будет:
from django.utils.dateparse import parse_datetime
from django.utils.timezone import is_aware, make_aware
def get_aware_datetime(date_str):
ret = parse_datetime(date_str)
if not is_aware(ret):
ret = make_aware(ret)
return ret