簡體   English   中英

Python Function 返回 x 天前的日期

[英]Python Function that returns date from x days ago

我正在嘗試編寫返回 x 天前的日期的 function。 如果沒有給出日期,它應該默認為今天的日期。

def get_x_days_ago (x: date: datetime = datetime.today())
    return date_x_days_ago

您可以使用datetime.datetimedatetime.timedelta

from datetime import datetime, timedelta

def get_x_days_ago(x, date=None):
    if date is None:
        date = datetime.now()
    return date - timedelta(days=x)

print(get_x_days_ago(1)) # 2021-04-26 15:43:53.448687

print(get_x_days_ago(365, datetime(2019, 1, 1))) # 2018-01-01 00:00:00

如果你想用datetime.datetime object assert結果。 例如,斷言“一天前”結果是否與一天前的datetime時間相同。

assert get_x_days_ago(1).replace(hour=0, minute=0, second=0, microsecond=0) == datetime(2021, 4, 26)

如果需要,可以將 return 語句改為

return (date - timedelta(days=x)).replace(hour=0, minute=0, second=0, microsecond=0)

在您的原始問題預編輯中,您鍵入帶注釋的datetime時間作為date類型和返回類型。 如果您不關心時間部分,則可以改為傳遞datetime.date object 而不必處理datetime.replace方法。 換句話說,代碼變成

from datetime import date, timedelta

def get_x_days_ago(x, date_given=None):
    if date_given is None:
        date_given = date.today()
    return date_given - timedelta(days=x)

print(get_x_days_ago(1)) # this is of `datetime.date` type
assert get_x_days_ago(1) == date(2021, 4, 26)
print(get_x_days_ago(365, date(2019, 1, 1))) # so is this

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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