需要在给定的时间内设置要命中的时间间隔
期望代码看起来像这样:
import datetime
import lib
my_time = datetime.time(hour=7, minute=7, second=7)
my_interval = lib.Interval(from="01:02:03", till="03:02:01)
print(lib.hits_interval(time=my_time, interval=my_interval))
我看到的代码与pd at pandas interval
非常相似但是pandas操作的是时间戳对象,这是不可接受的,目的是处理裸时间。
您可以直接使用data
/time
/datetime
对象,它们实现比较运算符:
import datetime
my_time = datetime.time(hour=7, minute=7, second=7)
start, end = datetime.time.fromisoformat("01:02:03"), datetime.time.fromisoformat("03:02:01")
print(start <= my_time < end)
如果你真的坚持使用一个类,你可以很容易地创建一个小的基于dataclass
的Interval
对象:
import datetime
from dataclasses import dataclass
@dataclass
class Interval:
start: datetime.time
end: datetime.time
@classmethod
def fromstring(cls, start: str, end: str):
return cls(datetime.time.fromisoformat(start), datetime.time.fromisoformat(end))
def __contains__(self, item):
return self.start <= item < self.end # inclusive start, exclusive end
my_time = datetime.time(hour=7, minute=7, second=7)
intervall = Interval.fromstring(start="01:02:03", end="03:02:01")
print(my_time in intervall)
最好的方法是使用部分lib:
import portion
import datetime
my_interval = portion.open(datetime.time(1, 2, 3), datetime.time(3, 2, 1))
my_time = datetime.time(7, 7, 7)
print(my_interval.contains(my_time))