我有一个应用程序,用于计算一些员工的薪水。
工资是从一个月的 21 号到下个月的 20 号计算的。因此,当员工使用该应用程序时,我需要根据今天的日期找到这两个日期(开始日期和结束日期)。
我怎样才能做到这一点?像 begin_of_month + 21 这样的东西不起作用,因为当它是一个月中的第三个时,它是 begin_of_last_month ..
有什么简单的方法可以找到最后一个 21 日和下一个 20 日吗?
我有一个应用程序,用于计算一些员工的薪水。
工资是从一个月的 21 号到下个月的 20 号计算的。因此,当员工使用该应用程序时,我需要根据今天的日期找到这两个日期(开始日期和结束日期)。
我怎样才能做到这一点?像 begin_of_month + 21 这样的东西不起作用,因为当它是一个月中的第三个时,它是 begin_of_last_month ..
有什么简单的方法可以找到最后一个 21 日和下一个 20 日吗?
您可以创建一个看起来像这样的辅助方法:
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)