1

我想知道从 timedelta 开始有多少小时在 Day 和 Night 范围内。

时间开始:

>>> dt_start = datetime.datetime(2012, 8, 19, 16, 0)

时间停止:

>>> dt_stop = datetime.datetime(2012, 8, 20, 3, 0)

时差:

>>> dtd = dt_stop - dt_start
>>> print(dtd.seconds//3600)
>>> 11

时间范围:

Day = 7am-22pm
Night = 22pm-7am

对于此示例,正确的输出将是:

Day hours: 6:00
Night hours: 5:00

我将不胜感激任何帮助。

4

1 回答 1

1

您需要指定白天和黑夜的过渡点,并计算到那个的增量,然后计算到终点的增量:

day_start = 7
night_start = 22

day_hours = 0
night_hours = 0
if dt_start.hour < night_start:
    dt_night = dt_start.replace(hour=night_start)
    day_hours = (dt_night - dt_start).seconds // 3600
    night_hours = (dt_end - dt_night).seconds // 3600

这是一个相当幼稚的设置,因为它不支持多天跨度等。将其视为一个起点。

于 2012-08-25T17:09:58.493 回答