假設我有一個標準的Post.first.created_at
datetime。我可以比較直接與日期時間格式2009-06-03 16:57:45.608000 -04:00
做一樣的東西:在rails中比較日期
Post.first.created_at > Time.parse("2009-06-03 16:57:45.608000 -04:00")
編輯:兩個字段都是日期時間,沒有日期。
假設我有一個標準的Post.first.created_at
datetime。我可以比較直接與日期時間格式2009-06-03 16:57:45.608000 -04:00
做一樣的東西:在rails中比較日期
Post.first.created_at > Time.parse("2009-06-03 16:57:45.608000 -04:00")
編輯:兩個字段都是日期時間,沒有日期。
是的,你可以使用比較操作符來比較日期例如: -
irb(main):018:0> yesterday = Date.new(2009,6,13)
=> #<Date: 4909991/2,0,2299161>
irb(main):019:0> Date.today > yesterday
=> true
但是你想比較的日期爲日期時間?
如果是這樣,您需要將日期時間轉換爲日期,然後進行比較。
我希望這會有所幫助。
是的,你可以用普通DateTime
對象(如一個你可以得到解析你的字符串)直接比較一個created_at
ActiveRecord的日期/時間字段的值。
在一個項目中,我有具有created_at DateTime對象值對象:
imac:trunk luca$ script/console
Loading development environment (Rails 2.3.2)
>> Value.first.created_at
=> Fri, 12 Jun 2009 08:00:45 CEST 02:00
>> Time.parse("2009-06-03 16:57:45.608000 -04:00")
=> Wed Jun 03 22:57:45 0200 2009
>> Value.first.created_at > Time.parse("2009-06-03 16:57:45.608000 -04:00")
=> true
的created_at字段被定義爲:
create_table "values", :force => true do |t|
[...]
t.datetime "created_at"
end
N.B.如果你的領域是一個日期,而不是日期時間,那麼你需要將其轉換爲一個時間:
Post.first.created_at.to_time > Time.parse("2009-06-03 16:57:45.608000 -04:00")
或分析日期:
Post.first.created_at > Date.parse("2009-06-03 16:57:45.608000 -04:00")
,否則你會得到一個:
ArgumentError: comparison of Date with Time failed
只是說明:比較軌道自己的日期時間對象與他人可以給出非常意想不到的結果。值得注意的是......見下: 'p.created_at#Fri,28 Aug 2015 21:45:14 UTC +00:00' 'p.updated_at#Fri,28 Aug 2015 21:45:14 UTC +00:00 ' 'p.created_at == p.updated_at#false' 所以你必須這樣做......'p.created_at.to_i == p.updated_at.to_i#true' 更多的信息在這裏:http:// stackoverflow .COM /問題/ 19599792 /比較-相同,日期時間,對象 - - 紅寶石爲什麼 - 是 - 這些,二,日期時間,NOWS – bwest87 2015-08-28 22:15:06