Python 转换两个日期时间的范围';输入日期列表,并计算每个日期的秒数

Python 转换两个日期时间的范围';输入日期列表,并计算每个日期的秒数,python,datetime,Python,Datetime,我对创建一个函数感兴趣,该函数获取以下两个datetime对象(开始日期和结束日期)作为输入,并返回元组列表。我想为开始日期和结束日期之间的每个日期创建一个元组,以及该日期中的秒数。例如: import datetime #there are total 86400 seconds within a date start_date=datetime.datetime(2017, 10, 17,22,30,0) # this has 60*60+60*30= 5400 within that da

我对创建一个函数感兴趣,该函数获取以下两个
datetime
对象(开始日期和结束日期)作为输入,并返回元组列表。我想为开始日期和结束日期之间的每个日期创建一个元组,以及该日期中的秒数。例如:

import datetime
#there are total 86400 seconds within a date
start_date=datetime.datetime(2017, 10, 17,22,30,0) # this has 60*60+60*30= 5400 within that date
end_date=datetime.datetime(2017, 10, 19,10,30,11) # this date has  10*60*60+60*30+11=37811 seconds

desired_list_of_tupple=[(datetime.datetime(2017, 10, 17),5400),(datetime.datetime(2017, 10, 18),86400),(datetime.datetime(2017, 10, 19),37811)]
2017-10-17的秒数为5400秒(22:30到午夜之间的秒数)

2017-10-18的秒数为86400(全天在范围内)

2017-10-19的秒数为37811秒(从午夜到10:30:11的秒数)

这方面的任何帮助都将非常好!

请尝试以下方法:

from datetime import timedelta

def date_range(start, end):                               
    current = start
    while True:
        next_stop = (current + timedelta(days=1)).replace(
            hour=0, minute=0, second=0)
        if next_stop > end:
            next_stop = end
        yield current.date(), (next_stop - current).total_seconds()
        if next_stop == end:
            break
        current = next_stop
这是一个生成器函数,因此您需要执行
list(日期范围(开始日期、结束日期))
以获取列表


我没有正确测试边缘案例(如结束日期与开始日期相同或早于开始日期等),我不确定您想要的是什么,但指定数据的输出是正确的。根据您的使用情况,请注意夏季夏令时时区周围的问题-您需要“时区感知”的datetime对象来实现这一点。

#该日期内有60*60+60*30=5400这意味着什么?为什么一个日期会有x am有多少秒?我会编辑这个问题谢谢,太完美了!这是为了回答:,欢迎你回答,我对现在的答案不太满意