Python 尝试减去两个日期以查找其间的天数

Python 尝试减去两个日期以查找其间的天数,python,datetime,zapier,Python,Datetime,Zapier,在Zapier中,我有两个日期,并试图在代码步骤中找到它们之间的天数。我在每个日期运行格式化程序步骤,以在YYYY-MM-DD中输出datetime对象,然后运行以下代码: submit = input['submit_date'] event = input['event_date'] delta = event-submit numdays = delta.days return {'numdays': numdays} 我得到的错误表明我导入的两个日期是字符串,而不是日期时间 以下是错

在Zapier中,我有两个日期,并试图在代码步骤中找到它们之间的天数。我在每个日期运行格式化程序步骤,以在YYYY-MM-DD中输出datetime对象,然后运行以下代码:

submit = input['submit_date']
event = input['event_date']
delta = event-submit
numdays = delta.days

return {'numdays': numdays}
我得到的错误表明我导入的两个日期是字符串,而不是日期时间

以下是错误:

您的代码有错误!回溯(最近一次调用):函数delta=event submit TypeError中的文件“/tmp/tmp7xyg3Z/usercode.py”,第10行-:“unicode”和“unicode”的操作数类型不受支持。


有人知道我做错了什么,或者有更好的方法来完成这项任务吗?

不包括格式化程序步骤,但通常您需要时间或日期时间对象(
import time
import datetime

您可能应该在datetime选项中查看类似于
datetime.strtime(日期字符串,格式)
的内容,以获取文本字符串并将其转换为日期/时间对象


不包括格式化程序步骤,但通常需要时间或日期时间对象(
import time
import datetime

您可能应该在datetime选项中查看类似于
datetime.strtime(日期字符串,格式)
的内容,以获取文本字符串并将其转换为日期/时间对象


我有两种方法
get\u days(开始日期、结束日期)
increment\u da\u day(开始日期)

调用
get_days()
它返回一个天数列表(格式为yyyymmdd),您可以提供开始日期和结束日期,并打印
get_days(开始日期,结束日期)-1

例如:

导入日期时间

def get_days(start_date, end_date):
    """returns a list of days"""
    all_days = []
    starts = start_date
    all_days.append(starts)

    while int(starts) < int(end_date):
        starts = increment_a_day(starts)
        all_days.append(starts)
    return all_days

def increment_a_day(str_date):
    """increments a day for given date string in format yyyymmdd"""
    year = int(str_date[:4])
    month = int(str_date[4:6])
    day = int(str_date[-2:])

    now = datetime.date(year, month, day)
    delta = datetime.timedelta(days=1)
    return (now + delta).strftime('%Y%m%d') #yyyymmdd

我有两种方法
get_days(开始日期、结束日期)
increment_dau day(开始日期)

调用
get_days()
它返回一个天数列表(格式为yyyymmdd),您可以提供开始日期和结束日期,并打印
get_days(开始日期,结束日期)-1

例如:

导入日期时间

def get_days(start_date, end_date):
    """returns a list of days"""
    all_days = []
    starts = start_date
    all_days.append(starts)

    while int(starts) < int(end_date):
        starts = increment_a_day(starts)
        all_days.append(starts)
    return all_days

def increment_a_day(str_date):
    """increments a day for given date string in format yyyymmdd"""
    year = int(str_date[:4])
    month = int(str_date[4:6])
    day = int(str_date[-2:])

    now = datetime.date(year, month, day)
    delta = datetime.timedelta(days=1)
    return (now + delta).strftime('%Y%m%d') #yyyymmdd

如果它们是字符串,您可以传递输入,也可以直接在那里获取输入,下面的代码将返回天

def h():
    from datetime import datetime
    date_format = "%m/%d/%Y"
    a = datetime.strptime(input('Enter first date in MM/DD/YY format '), date_format)
    b = datetime.strptime(input('Enter second date in MM/DD/YY format '), date_format)
    delta = b - a
    print (delta.days)
    return int(delta.days)


如果它们是字符串,您可以传递输入,也可以直接在那里获取输入,下面的代码将返回天

def h():
    from datetime import datetime
    date_format = "%m/%d/%Y"
    a = datetime.strptime(input('Enter first date in MM/DD/YY format '), date_format)
    b = datetime.strptime(input('Enter second date in MM/DD/YY format '), date_format)
    delta = b - a
    print (delta.days)
    return int(delta.days)


看起来
submit
event
是字符串-您希望它们作为
datetime
对它们进行数学运算。看起来
submit
event
是字符串-您希望它们作为
datetime
对它们进行数学运算。