我有一个 Ruby 日期范围:range = Date.parse("February 1, 2013")..Date.parse("January 15, 2014")
如果您执行 range.to_a
并将其转换为数组,您将获得该范围内每一天的数组项。
我想要的是每个月最后一天的数组。
基本上是这样的:[2013-02-28, 2013-03-31, 2013-04-30, ..., 2013-12-31, 2014-01-31]
最佳答案
这是一种方法,脱离了我的头脑:
range = Date.parse("February 1, 2013")..Date.parse("January 15, 2014")
range.to_a.map {|date| Date.new(date.year,date.month,1)}.uniq.map {|date| date.next_month.prev_day}
或者换句话说:
对于数组中的每个日期
- 使日元素等于 1 以找到每个月的第一天...
- 使集合独一无二,这样每个月就有一个元素......
- 每个值加一个月...
- 减去一天。
关于ruby - 将日期范围缩小为每个月最后几天的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20977260/