2013-01-23 27 views
0

我有一个应用程序用于计算一些雇员的工资。基于Date.today的日期范围

工资支票从一个月的21日到下个月的20日计算。所以当员工使用应用时,我需要根据今天的日期找到这两个日期(start_date和end_date)。

我该怎么做?类似于beginning_of_month + 21的行为不起作用,因为当它是一个月中的第3个时,它就是beginning_of_last_month ..

找到最后的第21个日期和下一个第20个日期的任何简单方法?

回答

2

您可以创建一个辅助方法,可能是这个样子:

def paycheck_dates(date, past_day, future_day) 
    before, after = Date.civil(date.year, date.month, past_day), Date.civil(date.year, date.month, future_day) 
    before <<= 1 if before > date 
    after >>= 1 if after < date 
    return before, after 
end 

操作<<= substracts一个月,>>=增加一个月。 在你的情况下,你可以这样称呼这种方法:

current_date = Date.today 
past_date, future_date = paycheck_dates(current_date, 21, 20) 
+0

完美..只是我在找什么......非常感谢! – Twiddr