将日期范围转换为数周和数月的数组

Shp*_*ord 8 ruby ruby-on-rails date

我想采用给定的日期范围并将其转换为日历周和月的结束日期.

所以,相同的范围,但会有weeksmonths输出.

范围: Date.parse("2014-01-30")..Date.parse("2014-03-27")

输出:

weeks = ["2014-02-02", "2014-02-09", "2014-02-16", "2014-02-23", "2014-03-02", "2014-03-09", "2014-03-16", "2014-03-23", "2014-03-02", "2014-03-30"]
months = ["2014-01-31", "2014-02-28", "2014-03-31"]
Run Code Online (Sandbox Code Playgroud)

我碰巧在Rails应用程序中执行此操作,因此可以使用Rails帮助程序方法(例如,end_of_week).

Aru*_*hit 16

我可以想到如下:

require 'date'

months = (Date.parse("2014-01-30")..Date.parse("2014-03-27")).group_by(&:month).map { |_,v| v.first.end_of_month.to_s } 
# => ["2014-01-31", "2014-02-28", "2014-03-31"]

weeks = (Date.parse("2014-01-30")..Date.parse("2014-03-27")).select(&:sunday?).map(&:to_s) 
# => ["2014-02-02",
#     "2014-02-09",
#     "2014-02-16",
#     "2014-02-23",
#     "2014-03-02",
#     "2014-03-09",
#     "2014-03-16",
#     "2014-03-23"]
Run Code Online (Sandbox Code Playgroud)

  • @ArupRakshit你的答案是好的,但是如果日期范围超过12个月则会在几个月内丢失. (2认同)