0

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

工资是从一个月的 21 号到下个月的 20 号计算的。因此,当员工使用该应用程序时,我需要根据今天的日期找到这两个日期(开始日期和结束日期)。

我怎样才能做到这一点?像 begin_of_month + 21 这样的东西不起作用,因为当它是一个月中的第三个时,它是 begin_of_last_month ..

有什么简单的方法可以找到最后一个 21 日和下一个 20 日吗?

4

1 回答 1

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)
于 2013-01-23T10:40:03.773 回答