繁体   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