ruby - 将日期范围缩小为每个月最后几天的数组?

标签 ruby arrays date-range

我有一个 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. 使日元素等于 1 以找到每个月的第一天...
  2. 使集合独一无二,这样每个月就有一个元素......
  3. 每个值加一个月...
  4. 减去一天。

关于ruby - 将日期范围缩小为每个月最后几天的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20977260/

相关文章:

javascript - 在 Rails 应用程序上使用外部 React 组件

java - elasticsearch 启动失败报错

java - 创建新数组 : int[] a = new int "char"] 时使用 ['a'

r - 检查日期列表是否在 r 中的日期范围内

Mysql从unixtime时间戳中选择日期范围给出了太多记录

css - 为什么我的 Rails 应用程序中的默认链接颜色发生了变化?

ruby-on-rails - 在 Rails 3 中使用 Cucumber/Capybara 测试 jQuery 标记自动完成

python - 大小可变的数组

arrays - 查找对象数组的索引

python - Pandas:按时间处理数据帧索引中缺失的数据