Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何编写一个python函数,从给定日期返回30天前的日期_Python_Function_Datetime - Fatal编程技术网

如何编写一个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:

您好,我是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:
        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用更新答案修复