irb> updated_at = "2014-03-18 13:05"
irb> updated_at.to_datetime.between?("2014-03-01","2014-03-18")
=> false
日期2014-03-18 13:05
介于2014-03-01
和2014-03-18
之间,为什么between?
会返回false
?
答案 0 :(得分:4)
DateTime
衡量当天的日期和时间。
当您仅指定日期时,时间元素将被假定为午夜(即当天最早可能的时间。)例如:
irb(main):012:0> DateTime.parse("2014-03-18")
=> #<DateTime: 2014-03-18T00:00:00+00:00 (4913469/2,0/1,2299161)>
您可以在上面的输出中看到它是午夜。
如果您将测试更改为3月19日而不是18日,那么它将返回true
。
您可以使用以下内容在两个日期内进行测试,而不考虑一天中的时间:
updated_at.to_datetime.between?("2014-03-01", "2014-03-18".to_datetime.end_of_day)