gpt4 book ai didi

python - 如何检查当前时间是否在python的范围内?

转载 作者:IT老高 更新时间:2023-10-28 20:44:30 26 4
gpt4 key购买 nike

我需要检查当前时间是否在时间范围内。最简单的情况time_end > time_start:

if time(6,0) <= now.time() <= time(12,00): print '1'

但是当用户进入结束时间小于开始时间的时间范围时,麻烦就开始了,例如“23:00 - 06:00”。像“00:00”这样的时间将在此范围内。大约 5 年前,我编写了这个 PHP 函数:

function checkInterval($start, $end)
{
$dt = date("H:i:s");

$tstart = explode(":", $start);
$tend = explode(":", $end);
$tnow = explode(":", $dt);

if (!$tstart[2])
$tstart[2] = 0;

if (!$tend[2])
$tend[2] = 0;

$tstart = $tstart[0]*60*60 + $tstart[1]*60 + $tstart[2];
$tend = $tend[0]*60*60 + $tend[1]*60 + $tend[2];
$tnow = $tnow[0]*60*60 + $tnow[1]*60 + $tnow[2];

if ($tend < $tstart)
{
if ($tend - $tnow > 0 && $tnow > $tstart)
return true;
else if ($tnow - $tstart > 0 && $tnow > $tend)
return true;
else if ($tend > $tnow && $tend < $tstart && $tstart > $tnow)
return true;
else return false;
} else
{
if ($tstart < $tnow && $tend > $tnow)
return true;
else
return false;
}

现在我需要做同样的事情,但我想让它看起来更好看。那么,我应该使用什么算法来确定当前时间 '00:00' 是否在 reversed 范围内,例如['23:00', '01:00']?

最佳答案

Python 解决方案将会非常非常短。

def time_in_range(start, end, x):
"""Return true if x is in the range [start, end]"""
if start <= end:
return start <= x <= end
else:
return start <= x or x <= end

startendx 使用 datetime.time 类。

>>> import datetime
>>> start = datetime.time(23, 0, 0)
>>> end = datetime.time(1, 0, 0)
>>> time_in_range(start, end, datetime.time(23, 30, 0))
True
>>> time_in_range(start, end, datetime.time(12, 30, 0))
False

关于python - 如何检查当前时间是否在python的范围内?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10747974/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com