Python从日期中减去日期或天数,得到年、月、日

2024-05-13 14:18:10 发布

您现在位置:Python中文网/ 问答频道 /正文

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

期待1 year, 2 months, 5 days20 days3 months, 2 days前等,而不是仅仅几天

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

Tags: importdatetimediffdaysyearnowtztimedelta
2条回答

使用^{}包中的dateutil.relativedelta

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().yearsrelativedelta().months

这可能对你有帮助。但是您也可以使用timetuple()检查这一点

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


b = birthday.timetuple()
n = datetime.datetime.now().timetuple()
print(f'Year diff: {n.tm_year-b.tm_year}')
print(f'Month diff: {n.tm_mon-b.tm_mon}')
print(f'Day diff: {n.tm_mday-b.tm_mday}')

相关问题 更多 >