Я много боролся с форматом даты и времени RFC3339, но я нашел подходящее решение для преобразования date_string <=> datetime_object в обоих направлениях.
Вам нужны два разных внешних модуля, потому что один из них может выполнять преобразование только в одном направлении (к сожалению):
первая установка:
sudo pip install rfc3339
sudo pip install iso8601
затем включают:
import datetime # for general datetime object handling
import rfc3339 # for date object -> date string
import iso8601 # for date string -> date object
Поскольку не нужно помнить, какой модуль для какого направления, я написал две простые вспомогательные функции:
def get_date_object(date_string):
return iso8601.parse_date(date_string)
def get_date_string(date_object):
return rfc3339.rfc3339(date_object)
который внутри вашего кода вы можете легко использовать следующим образом:
input_string = '1989-01-01T00:18:07-05:00'
test_date = get_date_object(input_string)
# >>> datetime.datetime(1989, 1, 1, 0, 18, 7, tzinfo=<FixedOffset '-05:00' datetime.timedelta(-1, 68400)>)
test_string = get_date_string(test_date)
# >>> '1989-01-01T00:18:07-05:00'
test_string is input_string # >>> True
Эврика! Теперь вы можете легко ( хаха ) использовать ваши строки даты и строки даты в удобном формате.