Я создаю диапазон для каждого месяца в моем примере.Ruby: Группировка диапазона дат по годам и месяцам
example_range = (Time.zone.today..2.years.from_now)
Вывод должен выглядеть так:
=> [Wed, 03 Aug 2016..Wed, 31 Aug 2016, Thu, 01 Sep 2016..Fri,
30 Sep 2016, Sat, 01 Oct 2016..Mon, 03 Oct 2016, ...]
На данный момент я делаю это, что не работает для диапазонов дольше, чем на год, потому что группировка поместит января '16 и Январь '17 в одной группе.
example_range.group_by(&:month).each { |_, month| month.first..month.last }
Я также попытался это, но рубин это на ошибку сегментации по какой-то причине ...
example_range.group_by(&:year).map{ |ary| ary.group_by(&:month)}
Кто-нибудь знает более красивый (или, по крайней мере, рабочий) способ сделать это?
1. Это должно быть вопрос, а не вопрос и ответ , Вы должны удалить раздел «Решение». Если вы хотите сказать, что используете конкретное решение, сделайте это как комментарий к соответствующему ответу. Если вы хотите предложить ответ самостоятельно, сделайте это как ответ. 2. Этот вопрос требует примера. Когда вы приводите пример, покажите ожидаемый или желаемый результат и назначьте переменную каждому входному объекту (например, 'arr = [1,2,3]'), чтобы читатели могли ссылаться на эти переменные в ответах и комментариях, а не определять их в их ответ. –
спасибо @CarySwoveland, я улучшил свой вопрос. – andialles
Намного лучше ... –