今天在之前的**中發現了乙個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...