【Python学习-基础篇】【时间操作】截取两个订单的开始时间与结束时间重叠的部分(源码)

输入信息:两个订单列表,开始时间、结束时间、订单号
输出:订单号1、订单号2、开始时间、结束时间

# -*- coding: UTF-8 -*-
import time



def str_int(time_str):
    # 日期转为时间戳,便于比对
    time_stamp = time.mktime(time.strptime(time_str, '%Y-%m-%d %H:%M:%S'))
    # print(time_stamp)
    return time_stamp


def int_str(time_stamp):
    # 时间戳转为时间,不保留日期
    time_str = time.strftime('%H:%M:%S', time.localtime(time_stamp))
    # print(time_str)
    return time_str

def time_overlap(start_list_one,start_list_two):
    # 求两个时间重叠部分
    overlap_list = []
    for i_one in start_list_one:
        for i_two in start_list_two:
            str_a = str_int(i_one[0])
            str_b = str_int(i_one[1])
            str_c = str_int(i_two[0])
            str_d = str_int(i_two[1])
            if str_a < str_c < str_b < str_d:
                new_a = int_str(str_c)
                new_b = int_str(str_b)
                overlap_list.append([i_one[2],i_two[2],new_a,new_b])
            elif str_c < str_a < str_d < str_b :
                new_a = int_str(str_a)
                new_b = int_str(str_d)
                overlap_list.append([i_one[2], i_two[2], new_a, new_b])
            elif str_c < str_a < str_b < str_d :
                new_a = int_str(str_a)
                new_b = int_str(str_b)
                overlap_list.append([i_one[2], i_two[2], new_a, new_b])

            elif str_a < str_c < str_d < str_b :
                new_a = int_str(str_c)
                new_b = int_str(str_d)
                overlap_list.append([i_one[2], i_two[2], new_a, new_b])
    print(overlap_list)
    return overlap_list
if __name__ == "__main__":
    start_list_one = [['2023-08-27 0:16:46', '2023-08-27 0:38:52', '8248201456'],['2023-08-27 0:48:13', '2023-08-27 2:24:21', '8248201462'], ['2023-08-27 2:33:20', '2023-08-27 2:59:59', '8248201465'],['2023-08-27 3:34:38', '2023-08-27 4:31:01', '8248201474']]
    start_list_two = [['2023-08-27 0:19:46', '2023-08-27 0:39:52', '8248201457'],['2023-08-27 0:46:13', '2023-08-27 2:22:21', '8248201463'], ['2023-08-27 2:35:20', '2023-08-27 2:55:59', '8248201466'],['2023-08-27 3:30:38', '2023-08-27 4:35:01', '8248201475']]
    time_overlap(start_list_one, start_list_two)
    #[['8248201456', '8248201457', '00:19:46', '00:38:52'], ['8248201462', '8248201463', '00:48:13', '02:22:21'], ['8248201465', '8248201466', '02:35:20', '02:55:59'], ['8248201474', '8248201475', '03:34:38', '04:31:01']]

你可能感兴趣的:(#,【时间操作-Python基础】,python,学习,开发语言)