日期范围基于Date.today

时间:2013-01-23 10:06:01

标签: ruby-on-rails date date-range

我有一个应用程序,用于计算一些员工的薪水。

薪水从一个月的21日到下个月的20日计算。因此,当员工使用应用程序时,我需要根据今天的日期找到这两个日期(start_date和end_date)。

我该怎么做?像begin_of_month + 21这样的东西不起作用,因为当它是一个月的第3个时,它就是begin_of_last_month ..

找到最后21个日期和下一个第20个日期的简单方法是什么?

1 个答案:

答案 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)