

以下のような２つの時間 (start, end) が与えられた時, その時間の差分は3時間です。

[code]

    import datetime
    
    start = datetime(2021, 1, 1, 1, 0)
    end = datetime(2021, 1, 1, 4, 0)
    
[/code]

これを利用して以下のような関数を作りたいのですが, 調べても解決策がないため質問させていただきます。

[code]

    def INPUT(start,end):
        #ここの処理がわからない
    
    #欲しい結果: startとendの間の時間を返す関数を作りたい
    INPUT(start,end) --> [2021-01-01 01:00:00, 2021-01-01 02:00:00, 2021-01-01 03:00:00, 2021-01-01 04:00:00]
    
[/code]

ここでstart,endは必ず時間ごとに区切りがついているものとします。  
ご教授お願いします。


CC BY-SA 4.0
2021-12-21T12:55:41.100
85255
2021-12-22T06:48:47.420
2021-12-22T06:48:47.420
3060
29111
question
python python3
与えられた２つの時間の差を１時間単位で返す関数を作りたい

[code]

    from datetime import datetime, timedelta
    
    def INPUT(start, end):
        return [start + timedelta(hours=i) for i in range((end - start).seconds // 3600 + 1)]
    
    if __name__ == '__main__':
        start = datetime(2021, 1, 1, 1, 0)
        end = datetime(2021, 1, 1, 4, 0)
    
        ret = INPUT(start,end)
        print([d.strftime("%F %T") for d in ret])
    
    #
    ['2021-01-01 01:00:00', '2021-01-01 02:00:00', '2021-01-01 03:00:00', '2021-01-01 04:00:00']
    
[/code]


CC BY-SA 4.0
2021-12-21T13:25:37.260
85256
2021-12-21T13:25:37.260
47127
85255
answer


以下で、いかがでしょうか。

[code]

    import datetime as dt
    import pandas as pd
    
    start = dt.datetime(2021, 1, 1, 1, 0)
    end = dt.datetime(2021, 1, 1, 4, 0)
    print(start, end)
    
    # １時間間隔
    date_list = pd.date_range(start=start, end=end, freq='H')
    display(date_list)
    print('Type:', isinstance(date_list[0], dt.datetime))
    
[/code]

◇出力  
2021-01-01 01:00:00 2021-01-01 04:00:00  
DatetimeIndex(['2021-01-01 01:00:00', '2021-01-01 02:00:00',  
'2021-01-01 03:00:00', '2021-01-01 04:00:00'],  
dtype='datetime64[ns]', freq='H')  
Type: True


CC BY-SA 4.0
2021-12-21T13:29:03.430
85257
2021-12-21T13:29:03.430
35267
85255
answer