Python 如何計算當前時間減少或增加乙個月

2022-02-11 02:41:58 字數 1378 閱讀 7835

今天在之前的**中發現了乙個bug,有個計算當前時間減少乙個月的函式,其報出下面的異常資訊:

valueerror: day is out of range for month
看一下**:

import datatime

def _last_month(now_time):

last_month = now_time.month - 1

last_year = now_time.year

if last_month == 0:

last_month = 12

last_year -= 1

month_time = datetime.datetime(month=last_month, year=last_year, day=now_time.day)

return month_time

問題出現在day=now_time.day上。後來想了一下,發現問題原因是3月30日減少乙個月是2月30日,而2月沒有30日,所以就丟擲了上面的異常資訊。

對於日期操作,網上的寫法都不太一樣,而且不確定存在什麼bug。日期函式是靠時間來驗證的,沒準一年以後就出現了(我這個bug是在指定的3月29日以後才能出現,神奇不:d)。

所以我找了乙個現有的日期擴充套件庫,希望別人已經踩過大部分坑了。**如下

import datetime

from dateutil.relativedelta import relativedelta

if __name__ == "__main__":

print(datetime.date.today() - relativedelta(months=+1))

可以看出,主要是使用relativedelta類。初始化引數months是月的差異。

安裝這個庫也很簡單,執行命令pip install python-dateutil

**在判斷應該是在354行開始:

if self.months:

assert 1 <= abs(self.months) <= 12

month += self.months

if month > 12:

year += 1

month -= 12

elif month < 1:

year -= 1

month += 12

day = min(calendar.monthrange(year, month)[1],

self.day or other.day)

參考:

@完

python 如何獲取當前時間

python 如何獲取當前系統的時間 1 匯入包 import datetime 2 獲取當前的時間 curr time datetime.datetime.now 2019 07 06 14 55 56.873893 curr time.year 2019 curr time.month 7 cu...

python 當前時間

url 我有的時候寫程式要用到當前時間,我就想用python去取當前的時間,雖然不是很難,但是老是忘記,用一次丟一次,為了能夠更好的記住,我今天特意寫下python 當前時間這篇文章,如果你覺的對你有用的話,可以收藏下。取得時間相關的資訊的話,要用到python time模組,python time...

python 當前時間

取得時間相關的資訊的話,要用到python time模組,python time模組裡面有很多非常好用的功能,你可以去官方 文件了解下,要取的當前時間的話,要取得當前時間的時間戳,時間戳好像是1970年到現在時間相隔的時間。你可以試下下面的方式來取得當前時間的時間戳 import time prin...