多くの従業員の給与を計算するために使用されるアプリがあります。
給料は毎月21日から翌月20日までで計算されます。したがって、従業員がアプリを使用する場合、今日の日付に基づいてこれら 2 つの日付 (start_date と end_date) を見つける必要があります。
どうやってやるの?月の始まり + 21 のようなものは機能しません。これは、月の 3 日が最後の月の始まりであるためです。
最後の 21 番目の日付と次の 20 番目の日付を見つける簡単な方法はありますか?
多くの従業員の給与を計算するために使用されるアプリがあります。
給料は毎月21日から翌月20日までで計算されます。したがって、従業員がアプリを使用する場合、今日の日付に基づいてこれら 2 つの日付 (start_date と end_date) を見つける必要があります。
どうやってやるの?月の始まり + 21 のようなものは機能しません。これは、月の 3 日が最後の月の始まりであるためです。
最後の 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
演算子<<=
は1か月を減算し、1か月を>>=
加算します。あなたの場合、このメソッドを次のように呼び出すことができます。
current_date = Date.today
past_date, future_date = paycheck_dates(current_date, 21, 20)