从 Ruby 数组中的哈希中提取日期值



我有一个数组,其中包含下面列出的一系列哈希值。

[{:pgs=>6, :oo=>"No", :ms_no=>"D3273", :auth=>"Johnson", :ms_recd=>"Mar 14", :ready_for_ce=>"Mar 15", :proj_back_from_ce=>"Apr 1", :final_ok=>"Jul 25", :pub_date=>"Aug 5", :notes=>" "}, 
{:pgs=>17, :oo=>"No", :ms_no=>"R4382", :auth=>"Jacobs", :ms_recd=>"Apr 12", :ready_for_ce=>"Apr 16", :proj_back_from_ce=>"May 17", :final_ok=>"Jul 10", :pub_date=>"June 10 ", :notes=>" "},
{:pgs=>15, :oo=>"No",  :ms_no=>"L3291", :auth=>"Smith", :ms_recd=>"Mar 25", :ready_for_ce=>"Mar 26", :proj_back_from_ce=>"Apr 22", :final_ok=>"Jun 21", :pub_date=>"Aug 10 ", :notes=>"Au prompted for cx 4/30", nil=>" 5/15."}]

我需要在每个哈希中取两个日期值:一个带有键:ms_recd,一个带有键:pub_date。然后,我将确定两个日期范围之间跨越了多少天(例如,18 天)。

幸运的是,我已经差不多弄清楚了最后一部分。我只需要做

ms_recd1 = DateTime.parse('Apr 24')
pub_date1 = DateTime.parse('Aug 15')
(pub_date1 - ms_recd1).to_i 

返回115(表示 115 天)。因此,假设对于三个哈希,我将提取 115、162 和 94 天的日期范围,然后将其平均为 123.6 天。

我的问题是,如何从此数组中提取这些日期值来执行此操作?我觉得这应该很简单,但我无法弄清楚它应该如何工作。

我的问题是,如何从此数组中提取这些日期值来执行此操作?

你可以写下来得到这些日期:

 array.map{|h| h.values_at(:ms_recd,:pub_date)}

完整的解决方案如@robertodecurnex评论:

 array.map{|h| (DateTime.parse(h[:pub_date]) - DateTime.parse(h[:ms_recd])).to_i}

最新更新