Python在2个日期时间对象之间获取整数小时值

时间:2011-05-18 10:15:59

标签: python datetime

我有2个日期时间值:'start'和end'。我想返回所有日期时间列表,这些日期时间恰好落在两者之间(包括两者之间)。

例如'start'是09:30,'end'是14:00(同一天)。我想要的价值是10:00,11:00,12:00,13:00,14:00。

我猜你要做的是在'start'之后的下一个小时,将它添加到空白列表,然后创建一个添加和小时的循环,测试它是否小于(或等于)'end'和如果属实,请将其附加到列表中。

我无法弄清楚如何将最近的整个小时计算到开始日期时间。

2 个答案:

答案 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)