获取从1月1日到12月31日的一年中星期一列表的最佳方法是什么

时间:2013-12-26 12:54:42

标签: ruby-on-rails ruby

我想获取当年从1月1日到12月31日的星期一列表

在Ruby中执行此操作的最佳方法是什么?

2 个答案:

答案 0 :(得分:4)

  

简单地说,我需要获得该范围内所有星期一的列表

使用Date#monday?

require 'date'

start_date = Date.new(2013,1,1)
end_date = Date.new(2013,12,31) 
(start_date..end_date).select(&:monday?)

答案 1 :(得分:2)

添加到Arup anwer,

start_date = (start_date = Date.new(2003,1,1)).monday? ? start_date : start_date.next_week
end_date = Date.new(2013,12,31)

基准

(start_date..end_date).select(&:monday?)

[#<Benchmark::Tms:0x007f9309191f88 @label="", @real=0.006969, @cstime=0.0, @cutime=0.0, @stime=0.0, @utime=0.0, @total=0.0>] 

(start_date..end_date).step(7)

[#<Benchmark::Tms:0x007f9309191da8 @label="", @real=0.00179, @cstime=0.0, @cutime=0.0, @stime=0.0, @utime=0.0, @total=0.0>]