我正在尝试根据给定年份的周数来做一些日期数学.例如:
date = Date.today # Monday,March 5,2012 puts date.cwyear # 2012 puts date.cweek # 10 (10th week of 2012)
现在我知道当前的一周是什么,我想知道下周和前一周是什么.我需要取年份(2012)和周数(10)并将其转回日期对象,以便我可以计算下一周/前一周的值.我怎样才能做到这一点?
解决方法
你想要
Date.commercial
:
require 'date' now = Date.today #=> 2012-03-05 monday_next_week = Date.commercial(now.cwyear,now.cweek+1) #=> 2012-03-12 next_sunday_or_today = monday_next_week - 1 #=> 2012-03-11
请注意,星期一星期开始,所以如果你在星期天并要求下一个星期一 – 1你会得到同一天.
另请注意,如果您不想要星期一,您还可以在方法中指定日期编号:
thursday_next_week = Date.commercial(now.cwyear,now.cweek+1,4) #=> 2012-03-15