我有当前字符串格式的日期:'Tue Feb 19 00:09:28 +1100 2013'
我试图弄清楚字符串中的日期和当前日期之间已经过去了多少天。
我已经能够将字符串转换为日期。
import time
day = time.strptime('Tue Feb 19 00:09:28 +1100 2013', '%a %b %d %H:%M:%S +1100 %Y')
我有当前字符串格式的日期:'Tue Feb 19 00:09:28 +1100 2013'
我试图弄清楚字符串中的日期和当前日期之间已经过去了多少天。
我已经能够将字符串转换为日期。
import time
day = time.strptime('Tue Feb 19 00:09:28 +1100 2013', '%a %b %d %H:%M:%S +1100 %Y')
请改用该datetime
模块:
import datetime
day = datetime.datetime.strptime('Tue Feb 19 00:09:28 +1100 2013', '%a %b %d %H:%M:%S +1100 %Y')
delta = day - datetime.datetime.now()
print delta.days
减去两个datetime.datetime
值会返回一个datetime.timedelta
对象,该对象具有一个days
属性。
您的字符串确实包含时区偏移量,并且您对其进行了硬编码以匹配;如果值变化,您将不得不使用可以处理偏移量的解析器。该python-dateutil
软件包包括一个出色的解析器和时区支持来处理这个问题:
>>> from dateutil import parser
>>> parser.parse('Tue Feb 19 00:09:28 +1100 2013')
datetime.datetime(2013, 2, 19, 0, 9, 28, tzinfo=tzoffset(None, 39600))
请注意,由于此结果包括时区,因此您现在需要datetime
在使用日期算术时使用时区感知对象:
>>> from dateutil import tz
>>> import datetime
>>> utcnow = datetime.datetime.now(tz.tzutc())
>>> then = parser.parse('Tue Feb 19 00:09:28 +1100 2013')
>>> utcnow - then
datetime.timedelta(31, 12087, 617740)
>>> (utcnow - then).days
31
我utcnow
在上面的示例中基于 UTC 时区创建了一个变量,然后计算解析日期是多久以前。