首页 > 解决方案 > Python 从日期中减去日期或天数得到年、月、日

问题描述

我试图从今天的日期中减去两个日期或天数。我想在几年、几个月、几天内得到结果。怎么做?

期待1 year, 2 months, 5 days, 20 days, 3 months, 2 daysago 等,而不仅仅是几天。

import datetime
import pytz
tz='US/Pacific'
birthday = datetime.datetime(2020, 2, 19, 12, 0, 0)

>>> import datetime
>>> import pytz
>>> tz='US/Pacific'
>>> birthday = datetime.datetime(2020, 2, 19, 12, 0, 0)
>>> diff = datetime.datetime.now() - birthday
>>>
>>> diff
datetime.timedelta(days=326, seconds=39130, microseconds=319509)
>>>
>>> birthday = datetime.datetime(2015, 2, 19, 12, 0, 0)
>>> diff = datetime.datetime.now() - birthday
>>> diff
datetime.timedelta(days=2152, seconds=39151, microseconds=823846)
>>>
>>> diff.days
2152

标签: pythonpython-3.xdatetime

解决方案


使用包中的dateutil.relativedeltadateutil

import datetime
from dateutil.relativedelta import relativedelta

>>> relativedelta(datetime.datetime.now(), datetime.datetime(2020, 2, 19, 12, 0, 0))
relativedelta(months=+10, days=+23, hours=+4, minutes=+8, seconds=+42, microseconds=+204978)

>>> relativedelta(datetime.datetime.now(), datetime.datetime(2015, 2, 19, 12, 0, 0))
relativedelta(years=+5, months=+10, days=+23, hours=+4, minutes=+9, seconds=+10, microseconds=+624971)

您可以提取年、月等,例如relativedelta().years,relativedelta().months等。


推荐阅读