python - timedelta和两个时间范围

时间:2012-08-25 17:02:50

标签: python datetime timedelta

我想知道timedelta在白天和黑夜范围内有多少小时。

时间启动:

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

时间停止:

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

Timedelta:

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

时间范围:

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

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

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

我将不胜感激任何帮助。

1 个答案:

答案 0 :(得分: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

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