擅长:python、mysql、java
<p>我最初的回答非常具体地集中在提出的问题上,不适应跨越午夜的时间范围。由于这仍然是6年后被接受的答案,我在下面加入了@rouble的答案,并在我的答案中扩展到支持午夜。</p>
<pre><code>from datetime import datetime, time
def is_time_between(begin_time, end_time, check_time=None):
# If check time is not given, default to current UTC time
check_time = check_time or datetime.utcnow().time()
if begin_time < end_time:
return check_time >= begin_time and check_time <= end_time
else: # crosses midnight
return check_time >= begin_time or check_time <= end_time
# Original test case from OP
is_time_between(time(10,30), time(16,30))
# Test case when range crosses midnight
is_time_between(time(22,0), time(4,00))
</code></pre>
<p>我仍然坚持我在下面的原始评论,即这种逻辑的大多数应用程序可能更适合于<code>datetime</code>对象,在这些对象中,无论如何,跨越午夜都会反映为日期更改。</p>