我的客户每个月的第二个星期一都有一个活动。
我需要在日历中用红色标记它们。
我如何“干净地”找出那个星期一的日期?
这是我的版本。
如果每月的第八个是星期一,那么它是第二个星期一。如果不是周一,那么距离下周一还有多少天?
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
一条规则就完成了!
你的第二个星期一总是在每个月的 8 号和 14 号之间。