只返回天数的日期时间差?
$ cat .t.py
import re
from datetime import datetime as dtt
oldestDate = dateComp = dtt.strptime('1.1.1001', '%d.%m.%Y')
dateComp = dtt.strptime('11.1.2011', '%d.%m.%Y')
ind = re.sub(" days,.*", "", str((dateComp - oldestDate)))
print ind
print dateComp - oldestDate
$ python .t.py
368905
368905 days, 0:00:00
我怎么才能只获取日期,而不使用那些复杂的正则表达式呢?这个问题变得有点麻烦,因为我需要在很多地方用到这个索引。所以有没有更简单的方法来做到这一点呢?
1 个回答
2
别急着用 str()
。当你把一个 datetime
减去另一个 datetime
时,得到的结果是一个 timedelta
对象,这个对象有一个 .days
属性,你可以直接读取这个属性。
(dateComp - oldestDate).days
要注意,如果你只读取 .days
属性,得到的结果会向下取整,也就是说它会忽略小数部分。如果你想要四舍五入到最接近的天数,就需要加一些逻辑来检查 .seconds
属性,看看它是更接近 0 还是 86400(一天的总秒数)。