我有一个应用程序,用于计算一些员工的薪水。
薪水从一个月的21日到下个月的20日计算。因此,当员工使用应用程序时,我需要根据今天的日期找到这两个日期(start_date和end_date)。
我该怎么做?像begin_of_month + 21这样的东西不起作用,因为当它是一个月的第3个时,它就是begin_of_last_month ..
找到最后21个日期和下一个第20个日期的简单方法是什么?
答案 0 :(得分: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
运营商<<=
减少一个月,>>=
增加一个月。
在您的情况下,您可以这样调用此方法:
current_date = Date.today
past_date, future_date = paycheck_dates(current_date, 21, 20)