我有 2 个日期时间值:"开始"和"结束"。我想返回一个列表,其中包含所有恰好落在两者之间的小时(包括)的日期时间。
例如,"开始"是09:30,"结束"是14:00(同一天)。我想返回的值是
10:00、11:00、12:00、13:00、14:00。我想你要做的是在"开始"之后获取下一个整小时,将其添加到空白列表中,然后创建一个加法和小时的循环,测试它是否小于(或等于)"结束"并将其附加到列表中如果为 true。
我无法弄清楚的是,如何获得最接近开始日期时间的整小时。
最简单的方法是将开始时间的分钟和秒替换为零,然后添加一个小时。
如果开始时间正好是整点并且您希望将其包括在内,则需要特殊情况
例如
>>> 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)
>>>
最好的方法是使用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)