如何找出特定年份每个月的第二个星期一的日期?

时间:2012-10-30 13:04:55

标签: ruby

我的客户每个月的每个星期一都有一个活动。

我需要在日历中用红色标记它们。

我如何“干净地”找出星期一的日期?

2 个答案:

答案 0 :(得分:2)

这是我的版本。

如果本月的第八个星期一是星期一,那么它是第二个星期一。如果不是星期一,那么到下周一会有多少天?

oct_2012 = Date.new 2012, 10, 8
oct_2012.wday   # => 1, We're done!

nov_2012 = Date.new 2012, 11, 8
nov_2012.wday   # => 4
nov_2012 + (8 - nov_2012.wday)  # => 2012-11-12

这有帮助吗?

修改

更简单的版本:只需添加即可完成。即使月份从星期一开始,该算法仍然有效。

oct_2012 = Date.new 2012, 10, 1
oct_2012 + (8 - oct_2012.wday)  # => 2012-10-08

nov_2012 = Date.new 2012, 11, 1
nov_2012 + (8 - nov_2012.wday)  # => 2012-11-12

一条规则并完成了!

答案 1 :(得分:0)

你第二个星期一将永远属于每个月的8日和14日。