为什么这个日期比较返回false?

时间:2014-03-18 11:26:30

标签: ruby-on-rails ruby datetime

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-012014-03-18之间,为什么between?会返回false

1 个答案:

答案 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)