Ruby 仅返回早于 2 天的日期 - 2:Integer 的未定义方法"days"



下面的数组我只想获得早于2天的天数。早于

data = ["2020-02-21T07:52:14.114+0100",
"2020-02-19T13:20:50.539+0100",
"2020-02-11T12:36:16.565+0100",
"2020-02-17T20:06:53.312+0100",
"2020-02-04T09:42:30.754+0100",
"2020-01-29T13:46:16.033+0100",
"2020-02-18T11:15:12.894+0100"]

我正试图用下面的代码做到这一点:

data.select { |data| data if DateTime.parse(data) > 2.days.ago }

但我得到了一个错误:

NoMethodError:2的未定义方法"days":Integer

正如其他人在评论中已经指出的,n.days.ago不是普通Ruby的一部分,而是在RubyonRails中引入的(请参阅有关daysago的文档(。

普通Ruby中n.day.ago的等价物可能是这样的:

Time.now - n * 24 * 60 * 60

这意味着,当你想选择超过2天的日期时,你可以这样写你的例子:

two_days_ago = Time.now - 2 * 24 * 60 * 60
data.select { |data| Time.parse(data) < two_days_ago }

请注意,select块中不需要date if部分。

最新更新