Python获取两个datetime对象之间的整小时值
我有两个日期时间值:“开始”和“结束”。我想返回一个所有日期时间的列表,这些日期时间正好位于两者之间的小时(包括) 例如,“开始”是09:30,“结束”是14:00(同一天)。我希望返回的值是10:00、11:00、12:00、13:00、14:00 我想你应该做的是在“开始”之后得到下一个完整的小时,将它添加到一个空白列表中,然后创建一个循环来添加和小时,测试它是否小于(或等于)“结束”,如果为真,则将它附加到列表中Python获取两个datetime对象之间的整小时值,python,datetime,Python,Datetime,我有两个日期时间值:“开始”和“结束”。我想返回一个所有日期时间的列表,这些日期时间正好位于两者之间的小时(包括) 例如,“开始”是09:30,“结束”是14:00(同一天)。我希望返回的值是10:00、11:00、12:00、13:00、14:00 我想你应该做的是在“开始”之后得到下一个完整的小时,将它添加到一个空白列表中,然后创建一个循环来添加和小时,测试它是否小于(或等于)“结束”,如果为真,则将它附加到列表中 我搞不懂的是如何得到最接近开始日期时间的整小时。最简单的方法是将开始时间的分
我搞不懂的是如何得到最接近开始日期时间的整小时。最简单的方法是将开始时间的分和秒替换为零,然后再加上一小时 如果开始时间正好是小时,并且您希望将其包括在内,则需要特殊情况 乙二醇
最简单的方法是将开始时间的分和秒替换为零,然后再加上一小时 如果开始时间正好是小时,并且您希望将其包括在内,则需要特殊情况 乙二醇
最好的方法是使用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)
最好的方法是使用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)
您可以通过减去一微秒来处理开始时间正好在小时上的特殊情况。@Sven,您可以这样做,但是OP没有指定如果开始时间正好在小时上,是否应该包括开始时间,所以这个特例可能根本不需要。如果正好在时间上,那么应该包括开始时间:)这对我来说非常有效。也谢谢Sven,这个技巧节省了几行代码。你可以通过减去一微秒来处理开始时间正好在小时上的特殊情况。@Sven,你可以这样做,但OP没有指定如果开始时间正好在小时上,是否应该包括开始时间,所以这个特例可能根本不需要。如果正好在时间上,那么应该包括开始时间:)这对我来说非常有效。也谢谢Sven,这个技巧节省了几行代码