迄今为止这是一项相当艰巨的任务。我想要做的是找出两个日期范围之间的日期范围有多少个月..我知道我现在听起来像尤达,但让我更愿意告诉你我想要完成的事情。在日期范围内计算日期范围中的月份的轨迹
financial_year_2014 = Date.new(2014,6,29)..Date.new(2015,6,30)
financial_year_2015 = Date.new(2015,6,29)..Date.new(2016,6,30)
现在我有一个记分卡,每月1点你在financial_year_2014
,每月2点,你是在financial_year_2015
所以,如果你的记分卡begin_date
和end_date
都属于该financial_year_2014
内的奖励它更容易在那里你可以做这样的事情
#Does date fall in range method
financial_year_2014.include?(scorecard.begin_date..scorecard.end_date)
,如果它适合在该期限内,然后这些返回true,那么你可以指望一个月s的:
((scorecard.end_date.year * 12 + scorecard.end_date.month) - (scorecard.begin_date.year * 12 + scorecard.begin_date.month)) * financial_year_2014_points
但现在我无法得到的是如果一个记分卡BEGIN_DATE和两个财年之间END_DATE交叉,如果begin_date
是五月和end_date
是在8月。那么你将在2014财政年度有2个月,在2015年有2个月。您将在2014年每月获得1分,2015年每月获得2分,本例中总共为6分。
上述示例中的#does date fall in range method
即使2个月落入该范围内也不会通过。任何人都有一个想法,我该如何完成此操作,或者是否有任何处理日期和范围的gem这个更好。
是的,这是我如何使它结构相似,我遇到的问题是找到计分卡可以落入每个范围的月数的方法 - 如果它确实落在两个范围之间financial_year_2014.include?方法将返回false – TheLegend 2014-09-19 14:38:52
@TheLegend我只是编辑我的文章,因为我真的需要检查我输入之前我提交。如果financial_year_2014失败,并且financial_year_2015失败,那么它会被踢进其他的建立2个新的范围,让您轻松访问2014个月和2015个月的数量 – MCBama 2014-09-19 14:43:36