簡體   English   中英

Rails 4比較API中的日期時間

[英]Rails 4 Comparing Datetime in API

嗨,我在將日期時間與Rails 4 JSON API進行比較時遇到問題。

我將范圍與created_at屬性一起使用

scope :later_than, -> (date) { where('created_at > ?', date) }

為created_at返回的JSON看起來像

"created_at" = "2015-05-07T01:16:43.611Z"

發送相同的日期時間時,API日志和SQL看起來像

Parameters: {"later_than"=>"2015-05-06T21:16:43.611-0400"}

created_at > '2015-05-06T21:16:43.611-0400'

在控制台中

Object.first.created_at
=> Thu, 07 May 2015 01:16:43 UTC +00:00
Object.first.created_at > '2015-05-06T21:16:43.611-0400'
=> true

最后一個比較應該為false,但相反為true,並且作用域無法正常工作。

記錄時

Object.first.created_at - '2015-05-06T21:16:43.611-0400'.to_datetime
=> 0.000402

所以發生的是:

  • API返回的日期時間被截斷為毫秒
  • Rails將日期時間與微秒精度進行比較

因此,當向API發送相同的日期時間時,微秒將被設置為0,因此比較無法按預期進行。

有沒有辦法告訴Rails:比較日期時間和毫秒精度?

Message.first.created_at等於Thu, 07 May 2015 01:16:43 UTC +00:00嗎? (您在那里有Object.first.created_at ),因為如果是,則控制台表達式的行為正確且應為true。

你嘗試過這樣的事情嗎?

Object.first.created_at > Time.parse('2015-05-06T21:16:43.611-0400')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM