Ruby:根据日期所在的一周将日期数组分组到哈希中,并将 Key 作为每周的第一个日期



例如,我有

['2013-12-29', '2013-12-31', '2014-01-04', '2014-01-11', '2014-01-15']

我希望输出为

{'2013-12-29'=>['2013-12-29', '2013-12-31', '2014-01-04'], '2014-01-05' => ['2014-01-11'], '2014-01-12' => ['2014-01-15']}

我尝试了%U,但它不符合我的要求,因为它会认为去年的最后一周与今年的第一周不同。

使用 Enumerable#group_by

require 'date'
a = ['2013-12-29', '2013-12-31', '2014-01-04', '2014-01-11', '2014-01-15']
a.group_by { |x|
  day = Date.strptime(x, '%Y-%m-%d')
  (day - day.wday).strftime('%Y-%m-%d')
}
# => {"2013-12-29"=>["2013-12-29", "2013-12-31", "2014-01-04"],
#     "2014-01-05"=>["2014-01-11"],
#     "2014-01-12"=>["2014-01-15"]}

相关内容

最新更新