Python: преобразование дампов unicode datetime обратно в объект datetime - PullRequest
4 голосов
/ 05 мая 2011

у меня есть ...

entity = simplejson.dumps({"a":unicode(datetime.datetime.utcnow())})

Как мне преобразовать дату и время (которые были преобразованы в юникод) обратно в дату и время?

Так что я могу сделать что-то вроде ...

entity2 = simplejson.loads(entity)
#your answer here..
add5 = entity2["a"] + datetime.timedelta(minutes=5)

Спасибо!

Ответы [ 2 ]

7 голосов
/ 05 мая 2011
DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S'

Перед сериализацией выполните следующие действия:

time = datetime.strftime(time, DATETIME_FORMAT)

После десериализации выполните следующие действия:

time = datetime.strptime(time, DATETIME_FORMAT)

пример:

>>> from datetime import datetime

>>> DATETIME_FORMAT = '%Y-%m-%d %H:%M:%S'

>>> time = datetime.now()
>>> time
datetime.datetime(2011, 5, 5, 3, 1, 45, 646302)

>>> time = time.strftime(DATETIME_FORMAT)
>>> time
'2011-05-05 03:01:45'

>>> import json

>>> time = json.loads(json.dumps(time))
>>> time
'2011-05-05 03:01:45'

>>> time = datetime.strptime(time, DATETIME_FORMAT)
>>> time
datetime.datetime(2011, 5, 5, 3, 1, 45)

Если выпосчитайте это несколько неуместным, вы можете рассмотреть пользовательский кодер / декодер json.Лично я попробовал те из них в стандартном пакете json, но бросил прическу с загадочными сообщениями об ошибках.Если вы пойдете по этому пути, я мог бы порекомендовать сторонний пакет json.

2 голосов
/ 05 мая 2011

Использовать datetime.datetime.strptime .

dt = datetime.datetime.strptime(entity2['a'], '%Y-%m-%d %H:%M:%S.%f')
...