返回x天前的日期的python函数

xfyts7mz  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(361)

我试图写一个函数,返回x天前的日期。如果没有指定日期,则应默认为今天的日期。

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

axkjgtzd1#

你可以用 datetime.datetime 以及 datetime.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

如果你想的话 `assert` 结果是 `datetime.datetime` 对象。例如,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)` 在原始问题预编辑中,键入annotated `datetime` 作为的类型 `date` 也作为返回类型。如果你不在乎时间部分,那么你可以通过 `datetime.date` 对象,不必处理 `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

相关问题