我想获取当年从1月1日到12月31日的星期一列表
在Ruby中执行此操作的最佳方法是什么?
答案 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>]