指示时间范围的params字符串
sched = "8:00AM-5:30PM"
我的数据库中存储了开始和结束时间
client1.sched_start # => 2000-01-01 07:30:00 UTC
client1.sched_end # => 2000-01-01 17:30:00 UTC
client2.sched_start # => 2000-01-01 08:30:00 UTC
client2.sched_end # => 2000-01-01 16:30:00 UTC
如何测试客户端时间范围是否在计划的小时范围内,返回true还是false?
到目前为止,我有这个,但我总是这样,弃用警告加上它真的很慢。
time_open = Time.use_zone('UTC'){Time.zone.parse '2000-01-01 '+sched.split("-")[0]}
time_close = Time.use_zone('UTC'){Time.zone.parse '2000-01-01 '+sched.split("-")[1]}
range = time_open..time_close
range === client1.sched_start && range === client1.sched_end
range === client2.sched_start && range === client2.sched_end
这是警告
的摘录warning: Time#succ is obsolete; use time + 1
此外,时间是不同的格式。例如,
time_open # Sat, 01 Jan 2000 08:00:00 UTC 00:00
这些对于到目前为止有所帮助:
答案 0 :(得分:0)
让我们简化您的问题,看看我们是否可以让您走上正确的道路。 time_open
评估为以下值:
>> time_open = Time.use_zone('UTC'){Time.zone.parse '2000-01-01 ' + "8:00AM"}
=> Sat, 01 Jan 2000 08:00:00 UTC +00:00
让我们将client1.sched_start
(我将其称为scheduled_time
)转换为Time对象(如果client1.sched_start
已经是Time对象,则可能不需要此步骤,请使用{{1}进行检查}})。
client1.sched_start.class
>> scheduled_time = Time.parse('2000-01-01 07:30:00 UTC')
=> 2000-01-01 07:30:00 UTC
和time_open
不相等:
scheduled_time
如果我们将>> time_open == scheduled_time
=> false
与同一时间进行比较,它将是相等的:
time_open
我认为使用>> correct_start = Time.parse('2000-01-01 08:00:00 UTC')
=> 2000-01-01 08:00:00 UTC
>> time_open == correct_start
=> true
和<
运算符来检查时间是否在一个范围内会更清楚:
>