0

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

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

return {'numdays': numdays}

我得到的错误表明我正在导入的两个日期是字符串,而不是日期时间。

这是错误:

Your code had an error! Traceback (most recent call last): File "/tmp/tmp7xyg3Z/usercode.py", line 10, in the_function delta = event-submit TypeError: unsupported operand type(s) for -: 'unicode' and 'unicode'

任何人都知道我做错了什么或更好的方法来完成这项任务?

4

3 回答 3

3

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

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

https://docs.python.org/2/library/datetime.html#strftime-strptime-behavior

于 2016-08-19T15:35:11.663 回答
0

我有两种方法get_days(start_date, end_date)increment_da_day(str_date)

调用get_days()它会返回一个日期列表(格式为 yyyymmdd),您可以提供您的开始日期和结束日期并打印get_days(start_date, end_date) - 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

您只需要执行以下操作:

days = get_days("20160601", "20160602")

delta =  len(days) - 1
print delta
于 2016-08-19T15:41:44.947 回答
0

如果它们是字符串,您可以传递输入或直接在此处输入,以下代码将返回日期

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)

或者

a='8/18/2008'
b='9/26/2008'
def h(c,d):
    from datetime import datetime
    date_format = "%m/%d/%Y"
    a = datetime.strptime(c, date_format)
    b = datetime.strptime(d, date_format)
    delta = b - a
    print (delta.days)
    return int(delta.days)
于 2016-08-19T15:46:30.390 回答