如何编写一个python函数,从给定日期返回30天前的日期
您好,我是python新手,我正在尝试编写一个函数,返回30天前给定日期的日期。我的函数有两个参数,如下所示:如何编写一个python函数,从给定日期返回30天前的日期,python,function,datetime,Python,Function,Datetime,您好,我是python新手,我正在尝试编写一个函数,返回30天前给定日期的日期。我的函数有两个参数,如下所示: import datetime def get_date_x_days_ago (x_days_ago, date_from = None): d = datetime.timedelta(days=x_days_ago) if date_from is None: date_from = datetime.today() else:
import datetime
def get_date_x_days_ago (x_days_ago, date_from = None):
d = datetime.timedelta(days=x_days_ago)
if date_from is None:
date_from = datetime.today()
else:
datetime.datetime.strptime(date_from, "YYYY-mm-dd")
return date_from - d
print(get_date_x_days_ago(x_days_ago=30, date_from="2020-11-11"))
我似乎无法使函数按预期工作您需要将解析的日期从
strtime
分配给date\u from
变量
此外,有关相应的日期格式代码,请参见(在“格式代码列表”下),即“%Y”表示带世纪的年份
import datetime
def get_date_x_days_ago (x_days_ago, date_from = None):
d = datetime.timedelta(days=x_days_ago)
if date_from is None:
date_from = datetime.datetime.today()
else:
date_from = datetime.datetime.strptime(date_from, "%Y-%m-%d")
# ^^^^ missing assignment
return date_from - d
print(get_date_x_days_ago(x_days_ago=30, date_from="2020-11-11"))
您需要将解析的日期从
strtime
分配给date\u from
变量
此外,有关相应的日期格式代码,请参见(在“格式代码列表”下),即“%Y”表示带世纪的年份
import datetime
def get_date_x_days_ago (x_days_ago, date_from = None):
d = datetime.timedelta(days=x_days_ago)
if date_from is None:
date_from = datetime.datetime.today()
else:
date_from = datetime.datetime.strptime(date_from, "%Y-%m-%d")
# ^^^^ missing assignment
return date_from - d
print(get_date_x_days_ago(x_days_ago=30, date_from="2020-11-11"))
因为你找到了某个日期,从某个日期到前一天的某个日期。因此,首先,将您的
date\u从
转换为only date,然后减去x\u天
from datetime import timedelta, datetime, date
def get_date_x_days_ago(x_days_ago, date_from=None):
return datetime.strptime(date_from, '%Y-%m-%d').date() - timedelta(x_days_ago) if date_from else date.today()-timedelta(x_days_ago)
print(get_date_x_days_ago(x_days_ago=30, date_from="2020-11-11"))
输出
get_date_x_days_ago(x_days_ago=30, date_from="2020-11-11")
2020-10-12
get_date_x_days_ago(x_days_ago=30)
2021-03-12
因为你找到了某个日期,从某个日期到前一天的某个日期。因此,首先,将您的
date\u从
转换为only date,然后减去x\u天
from datetime import timedelta, datetime, date
def get_date_x_days_ago(x_days_ago, date_from=None):
return datetime.strptime(date_from, '%Y-%m-%d').date() - timedelta(x_days_ago) if date_from else date.today()-timedelta(x_days_ago)
print(get_date_x_days_ago(x_days_ago=30, date_from="2020-11-11"))
输出
get_date_x_days_ago(x_days_ago=30, date_from="2020-11-11")
2020-10-12
get_date_x_days_ago(x_days_ago=30)
2021-03-12
ValueError:时间数据“2020-11-11”与格式“YYYY-mm-dd”不匹配您是否收到此错误?正在编辑-请参阅更新的回答如果我将日期从指定为无。。。ie打印(获取日期x天之前(x天之前=30,日期从=无))。。。。我得到以下错误:date\u from=datetime.today()AttributeError:module'datetime'没有属性'today'测试函数是否工作的最佳方法是什么?您可以编写单元测试来测试函数,并根据几种情况验证函数返回的日期是否正确:
x\u days\u ago
为零,x\u days\u ago
为正,x\u days\u ago
为负,date\u from
为无,date\u from
格式良好,date\u from
格式不正确。值错误:时间数据'2020-11-11'与格式'YYYY-mm-dd'不匹配您是否收到此错误?正在编辑-请参阅更新的回答如果我将日期\u from指定为none。。。ie打印(获取日期x天之前(x天之前=30,日期从=无))。。。。我得到以下错误:date\u from=datetime.today()AttributeError:module'datetime'没有属性'today'测试函数是否工作的最佳方法是什么?您可以编写单元测试来测试函数,并根据几种情况验证函数返回的日期是否正确:x\u days\u ago
为零,x\u days\u ago
为正,x\u days\u ago
为负,date\u from
为无,date\u from
格式良好,date\u from
格式不正确。缺少空格-如果datefrom else
->如果date\u from else
用更新答案修复缺少空格-如果datefrom else
如果date\u from else用更新答案修复