尝试编写时间增量函数

时间:2019-04-10 05:56:43

标签: python datetime

我试图用python编写一个函数,据此我可以输入开始时间和结束时间,它将返回总小时数。

目前,我已经能够编写一个函数,例如,我在其中输入('07:30:00','12:00:00')并返回4.5

我希望能够导入列表。例如,

(''07:30:00,08:30:00','12:00:00,12:00:00')并使其返回4.5,3.5等...

如何更改我的代码,以便我可以这样做?

谢谢

我已经忙了好几个小时,但是对python来说是一个新手,所以不知道如何从这里前进

def compute_opening_duration(opening_time, closing_time):
    while True:
        try:
            FORMAT = '%H:%M:%S'
            tdelta = datetime.strptime(closing_time, FORMAT) - datetime.strptime(opening_time, FORMAT)
            tdelta_s = tdelta.total_seconds()
            tdelta_m = tdelta_s/60
            tdelta_h = tdelta_m/60
            print(tdelta_h)
            break
        except ValueError:
            print('-1')
            break

2 个答案:

答案 0 :(得分:1)

将数组作为参数传递给函数。检查打开时间数组的长度是否与关闭时间数组的长度相同。声明结果数组,在计算tdelta的那一行中,您必须追加到结果数组之后。

def compute_opening_duration(opening_time_arr, closing_time_arr):
    if len(opening_time_arr) != len(closing_time_arr):
        return
    resultTime = []
    for idx, closing_timein enumerate(closing_time_arr) :
            try:
                FORMAT = '%H:%M:%S'
                tdelta = datetime.strptime(closing_time, FORMAT) - 
    datetime.strptime(opening_time_arr[idx], FORMAT)
                resultTime.append(tdelta)
                tdelta_s = tdelta.total_seconds()
                tdelta_m = tdelta_s/60
                tdelta_h = tdelta_m/60
                #print(tdelta_h)
            except ValueError:
                pass   
            #print('-1')
    return resultTime

答案 1 :(得分:1)

如果我正确回答了问题

def compute_opening_duration(time_list):
    # convert to datetime: 
    FORMAT = '%H:%M:%S'
    time_list = [datetime.strptime(time, FORMAT) for time in time_list]

    # compute and return deltas
    return [(close_time-open_time).total_seconds()/3600 
            for open_time, close_time in zip(time_list[:-1], time_list[1:])