python中时间间隔默认单位是什么_Python时间增量(以年为单位)
你需要不止一個(gè)timedelta來說明多少年過去了;你還需要知道開始(或結(jié)束)日期。(這是閏年的事。)
最好的方法是使用dateutil.relativedeltaobject,但這是第三方模塊。如果您想知道從某個(gè)日期起的datetime年(默認(rèn)為現(xiàn)在),可以執(zhí)行以下操作:from dateutil.relativedelta import relativedelta
def yearsago(years, from_date=None):
if from_date is None:
from_date = datetime.now()
return from_date - relativedelta(years=years)
如果你愿意堅(jiān)持使用標(biāo)準(zhǔn)庫,答案就更復(fù)雜了:from datetime import datetime
def yearsago(years, from_date=None):
if from_date is None:
from_date = datetime.now()
try:
return from_date.replace(year=from_date.year - years)
except ValueError:
# Must be 2/29!
assert from_date.month == 2 and from_date.day == 29 # can be removed
return from_date.replace(month=2, day=28,
year=from_date.year-years)
如果是2/29,而18年前沒有2/29,這個(gè)函數(shù)將返回2/28。如果您希望返回3/1,只需將最后一個(gè)return語句改為:return from_date.replace(month=3, day=1,
year=from_date.year-years)
你的問題本來是想知道從某個(gè)日期到現(xiàn)在有多少年了。假設(shè)您需要整數(shù)年數(shù),可以根據(jù)每年365.25天進(jìn)行猜測(cè),然后使用上面定義的yearsago函數(shù)之一進(jìn)行檢查:def num_years(begin, end=None):
if end is None:
end = datetime.now()
num_years = int((end - begin).days / 365.25)
if begin > yearsago(num_years, end):
return num_years - 1
else:
return num_years
總結(jié)
以上是生活随笔為你收集整理的python中时间间隔默认单位是什么_Python时间增量(以年为单位)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker rabbitmq_一文看懂
- 下一篇: websocket python爬虫_p