将unicode转换为datetime格式

时间:2014-03-06 08:42:22

标签: python datetime unicode

函数以unicode格式返回日期和时间。

 u'2014-03-06T04:38:51Z'

我希望将其转换为日期和时间格式,并将其与当前日期时间相减,以获得介于两者之间的天数。

提前致谢

2 个答案:

答案 0 :(得分:4)

检查字符串是 unicode

>>> import types
>>> type(u'2014-03-06T04:38:51Z') is types.UnicodeType
True

字符串转换为日期时间

>>> import datetime
>>> datetime.datetime.strptime(u'2014-03-06T04:38:51Z', '%Y-%m-%dT%H:%M:%SZ')
datetime.datetime(2014, 3, 6, 4, 38, 51)

今天减去

>>> import datetime
>>> today = datetime.datetime.today()
>>> yourdate = datetime.datetime.strptime(u'2014-03-06T04:38:51Z', '%Y-%m-%dT%H:%M:%SZ')
>>> difference = today - yourdate
print str(difference)

答案 1 :(得分:2)

首先,您必须将字符串转换为datetime.datetime对象。

import datetime
then = datetime.datetime.strptime(u'2014-03-06T04:38:51Z', "%Y-%m-%dT%H:%M:%SZ")

then将自己表示为datetime.datetime(2014, 3, 6, 4, 38, 51),看起来是正确的。然后你必须得到今天的datetime.datetime日期。

now = datetime.datetime.now()

最后从你的日期中减去它(或反之亦然 - 问题没有说清楚。)delta是一个datetime.timedelta对象,以天为单位存储增量,秒和微秒。后两者总是积极的,第一种可能是消极的。

for delta in (now-then, then-now):
    print(delta, "::", delta.days, delta.seconds, delta.microseconds)

打印出来:

-1 day, 20:18:14.250142 :: -1 73094 250142
3:41:45.749858 :: 0 13305 749858

最好用一些例子来说服自己这是正确的。