簡體   English   中英

如何從特定日期格式中減去一個月?

[英]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.

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