将unicode转换为日期时间格式

2 投票
2 回答
25947 浏览
提问于 2025-04-17 21:05

一个函数返回的是Unicode格式的日期和时间。

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

我想把这个转换成普通的日期和时间格式,然后和现在的日期时间相减,以计算它们之间的天数。

提前谢谢你!

2 个回答

3

首先,你需要把你的字符串转换成一个 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

最好试几个例子,确认一下结果是否正确。

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)

撰写回答