试着减去两个日期来找出中间的天数

2024-10-02 02:34:01 发布

您现在位置:Python中文网/ 问答频道 /正文

在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'

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


Tags: 代码程序eventinputdate错误时间unicode
3条回答

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

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

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

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

invokeget_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

您只需执行以下操作:

^{pr2}$

如果它们是字符串,则可以传递输入或直接在那里输入,下面的代码将返回日期

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)

或者

^{pr2}$

相关问题 更多 >

    热门问题