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
?
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)