LoginSignup
0
0

【Ruby】between?でtime.zoneを範囲指定として渡す際の注意点

Posted at

Rubyのbetween?()の返り値が想定と違かった原因をメモ。

now = Time.zone.now
start_time = Time.zone.parse("2024/07/01 12:00")
end_time = Time.zone.parse("2024/07/31 23:59")

if now.between?(start_time, end_time)
  ~...
end

データとしてはこんな感じ。
now2024/07/31 23:59になったと仮定して動作を確認していたら
条件がfalseになってif文に入らなかった。

原因

end_timeをparseしたときに秒数を指定していないので、
now23:59:00以降になると分岐条件がfalseになってif文に入らない。

解決策

終了時刻は秒数を指定する。

end_time = Time.zone.parse("2024/07/31 23:59")

end_time = Time.zone.parse("2024/07/31 23:59:59")

文章にするとそうだよねってなるのに、
いざ直面すると焦って思い出せなかった・・・orz

0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0