-1

我正在使用以下格式的哈希:

{2013-09-19 11:37:18 UTC=>10.780000000000001, 2013-09-21 11:37:18 UTC=>2.55, 2013-09-23 08:42:25 UTC=>2.55}

然后我有一个循环,其中我有这种格式的日期值2013-09-21。我试图根据日期值在哈希中找到一个值。

这是我正在尝试的:

%div "#{@data1.select{|key, hash| key.strftime('yyyy-MM-dd').to_s == day.to_s }}"
%div "#{@data2.select{|key, hash| key.to_s == day.to_s }}"

但在这两种情况下,我都得到一个空数组。一种方法是遍历整个散列并比较值,但这可能不是在散列中查找项目的非常有效的方法。

我正在尝试select上面的方法,但我不确定如何正确使用它。

4

2 回答 2

5

如果day是 a String,请尝试

@data1.select{|key, hash| key.strftime('%Y-%m-%d') == day}

如果day是一个Date对象,请尝试

@data1.select{|key, hash| key.to_date == day}

要返回所选键的值,请执行

@data1.select{|key, hash| key.to_date == day}.values.first
于 2013-09-24T14:33:12.250 回答
0

问题是您将 DateTime 与 Date 进行比较(鉴于两者的格式)。

所以,你可以做这样的事情:

%div "#{@data1.select{|key, hash| key.to_date.to_s == day.to_s }}"
%div "#{@data2.select{|key, hash| key.to_date.to_s == day.to_s }}"
于 2013-09-24T14:34:41.290 回答