簡體   English   中英

Python 從日期中減去日期或天數得到年、月、日

[英]Python subtract dates or days from date to get years, months, days

我試圖從今天的日期中減去兩個日期或天數。 我想在幾年、幾個月、幾天內得到結果。 怎么做?

預計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

使用dateutil package 中的dateutil

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}')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM