gpt4 book ai didi

ruby-on-rails - 如何在 Ruby 中创建一个以当前月份开始的日期范围数组?

转载 作者:太空宇宙 更新时间:2023-11-03 17:53:38 26 4
gpt4 key购买 nike

感谢Stefan我能够创建一个返回多个日期范围的函数:

def years
[2013, 2012, 2011, 2010, 2009]
end

def month_ranges
years.flat_map { |y|
12.downto(1).map { |m| Date.new(y,m,1)..Date.new(y,m,-1) }
}
end

# =>

[
Mon, 01 Dec 2013..Wed, 31 Dec 2013,
Sat, 01 Nov 2013..Sun, 30 Nov 2013,
Wed, 01 Oct 2013..Fri, 31 Oct 2013,
Mon, 01 Sep 2013..Tue, 30 Sep 2013
]

现在,有没有办法让这个日期数组也以当年的当前月开始?在接下来的几年中,它应该始终从 12 月开始,到 1 月结束。

感谢任何能提供帮助的人。

最佳答案

简单的答案:对照当前年份检查年份。如果它们相等,则从当月开始,如果不相等,则从 12 开始。

years = [2013, 2012, 2011, 2010, 2009]

def month_ranges
years.flat_map { |y|
if y == Date.today.year
start = Date.today.month
else
start = 12
end
start.downto(1).map { |m| Date.new(y,m,1)..Date.new(y,m,-1) }
}
end

关于ruby-on-rails - 如何在 Ruby 中创建一个以当前月份开始的日期范围数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19010350/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com