例如,我有
['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"]}