[英]How to subtract a month from an specific date format?
我正在嘗試設置一個 function 從特定日期格式中減去一個月作為參數,並以相同的特定日期格式返回日期,
此參數由今天的月份和年份給出: 01/%m/%Y
。
實際代碼:
from datetime import datetime
import dateutil.relativedelta
actual_date = datetime.now()
actual_date = "{}/{}/{}".format('01', actual_date.month, actual_date.year)
def set_date(actual_date):
print(actual_date - dateutil.relativedelta.relativedelta(months=1))
這是測試set_date()
時的 output:
set_date(actual_date)
TypeError: unsupported operand type(s) for -: 'str' and 'relativedelta'
預期的 output 應如下所示:
01/12/2020
你做錯了順序。 先進行日期計算,然后轉換為字符串。
now = datetime.now()
one_month_ago = now - dateutil.relativedelta.relativedelta(months=1)
print("{}/{}/{}".format('01', one_month_ago.month, one_month_ago.year))
在第一行中,您得到一個datetime
,然后在第二行中,您從中構建一個string
。 結果,在set_date
中,您會收到上述錯誤。
我建議您刪除第二行,只需將datetime object
提供給set_date
並對結果執行strftime
:
actual_date = datetime.now()
def set_date(actual_date):
result = actual_date - dateutil.relativedelta.relativedelta(months=1)
print(datetime.strftime(result, "01/%m/%Y"))
但是,如果你真的想保留這些轉換,你可以使用strptime
來達到這個目的。
actual_date = datetime.now()
actual_date = datetime.strptime("{}/{}/{}".format('01', actual_date.month, actual_date.year), "%d/%m/%Y")
def set_date(actual_date):
result = actual_date - dateutil.relativedelta.relativedelta(months=1)
print(datetime.strftime(result, "%d/%m/%Y"))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.