我有2个日期时间值:'start'和end'。我想返回所有日期时间列表,这些日期时间恰好落在两者之间(包括两者之间)。
例如'start'是09:30,'end'是14:00(同一天)。我想要的价值是10:00,11:00,12:00,13:00,14:00。
我猜你要做的是在'start'之后的下一个小时,将它添加到空白列表,然后创建一个添加和小时的循环,测试它是否小于(或等于)'end'和如果属实,请将其附加到列表中。
我无法弄清楚如何将最近的整个小时计算到开始日期时间。
答案 0 :(得分:3)
最简单的方法是将开始时间的分钟和秒数替换为零,然后再加1小时。
如果开始时间恰好在一小时并且您希望包含它,则需要一个特殊情况
例如
>>> from datetime import datetime, timedelta
>>> start_time = datetime.now()
>>> start_time
datetime.datetime(2011, 5, 18, 20, 38, 55, 546000)
>>> first = start_time.replace(minute=0, second=0, microsecond=0)+timedelta(hours=1)
>>> first
datetime.datetime(2011, 5, 18, 21, 0)
>>>
答案 1 :(得分:1)
最好的方法是使用timedelta。
>>> from datetime import datetime, timedelta
>>> start = datetime.now()
>>> if start.minute >= 30:
... start.replace(minute=0)+timedelta(hours=1)
... else:
... start.replace(minute=0)