这个也困扰了我.没有一种非常干净的方法来获得特定单位的时间跨度.这部分是因为日期范围依赖于单位.
relativedelta()接受了几个月的争论.但是当你想到一个月有多长时间时,答案是“它取决于”.话虽如此,技术上不可能将relativedelta()直接转换为几天,而不知道三角洲落在哪一天.
这就是我最终做的事情.
from datetime import datetime, timedelta
from dateutil.relativedelta import relativedelta
rd = relativedelta(years=3, months=7, days=19)
# I use 'now', but you may want to adjust your start and end range to a specific set of dates.
now = datetime.now()
# calculate the date difference from the relativedelta span
then = now - rd
# unlike normal timedelta 'then' is returned as a datetime
# subtracting two dates will give you a timedelta which contains the value you're looking for
diff = now - then
print diff.days