我之前问了一个类似的问题,得到了一些很好的反馈。我将几个答案结合起来得出一个解决方案,但效果似乎非常低效。我正在寻找一种更好的方法来获取变量(ts
)和今天之间的整数天的总天数。
我的代码:
import datetime
ts = '2015-03-01T17:09:00.000+0000'
ts = ts[:10]
f = '%Y-%m-%d'
date_from_sql = datetime.datetime.strptime(ts, f)
now = datetime.datetime.now()
now = str(now)
now = now[:10]
now = datetime.datetime.strptime(str(now), f)
delta = date_from_sql - now
print delta.total_seconds()/(3600*24)
输出:
67.0
答案 0 :(得分:4)
delta.total_seconds()/(3600*24)
,只需使用.days
from datetime import datetime
now = datetime.now()
ts = '2015-03-01T17:09:00.000+0000'
ts = ts[:10]
f = '%Y-%m-%d'
date_from_sql = datetime.strptime(ts, f)
print(date_from_sql - now).days
如果您不想花时间考虑使用日期:
now = datetime.now().date()
ts = '2015-03-01T17:09:00.000+0000'
ts = ts[:10]
f = '%Y-%m-%d'
date_from_sql = datetime.strptime(ts, f).date()
print(date_from_sql - now).days
如果日期字符串可能采用不同的格式,您可能需要dateutil:
from dateutil import parser
now = datetime.now().date()
ts = '2015-03-01T17:09:00.000+0000'
ts = parser.parse(ts).date()
print(ts - now).days
答案 1 :(得分:1)
@Padraic,是的,我的解决方案也一样,
from datetime import datetime
ts = '2015-03-01T17:09:00.000+0000'
print "days:-", (datetime.strptime(ts[:10], '%Y-%m-%d').date() - datetime.now().date()).days
答案 2 :(得分:0)
如果你不关心一天中的时间(和时区),即结果有一天的分辨率;您可以使用datetime.date
类和.toordinal()
方法获取天数:
from datetime import date
ts = '2015-03-01T17:09:00.000+0000'
date_from_sql = date(*map(int, ts[:10].split('-')))
print(date_from_sql.toordinal() - date.today().toordinal())
# -> 66