我有三个不同的TimeWithZone
对象:
from = Mon, 20 Apr 2020 00:00:00.000000000 UTC +00:00
to = Mon, 20 Apr 2020 23:59:59.000000000 UTC +00:00
event = Sat, 01 Jan 2000 07:00:00.000000000 UTC +00:00
我不在乎日期。我所需要的只是能够看到event
的时间是否落在from
和to
的时间范围内。
在上面的示例中,事件确实在时间范围内。
我尝试过使用strftime
将from
和to
转换为它们的时间值,然后使用#to_time
将它们转换回时间,但这会导致小时和分钟发生变化。
有什么想法吗?
您可以格式化每个值,然后比较它们
from_time, to_time, event_time = [from, to, event].map { |t| t.strftime("%H%M%S%N") }
event_time.between?(from_time, to_time)
另一个选项-只比较秒(如Float
(
from_sec, to_sec, event_sec = [from, to, event].map(&:seconds_since_midnight)
event_sec.between?(from_sec, to_sec)