0

時間範囲を示す 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

これらは、これまでのところ役に立ちました。

4

1 に答える 1