Здесь есть два трюка: один из них заключается в том, что правила различаются в зависимости от сроков Я имею в виду, что если человеку платят один раз в неделю, то через 7 дней ему платят один раз, через 14 дней ему платят дважды и т. Д. Но если человеку платят 1 и 16 числа каждого месяца, я не могу Скажите, сколько раз ему заплатили за 60 дней, не зная, какие месяцы были включены: где они короткие или долгие месяцы?
Во-вторых, вам нужно беспокоиться о начале и конце периода времени. Если человеку платят каждый понедельник, то количество раз, когда ему платят за 8 дней, зависит от того, является ли первый день 8 понедельником.
Таким образом, я думаю, что вам нужно иметь различную логику для расписаний с фиксированным числом дней и с привязкой к месяцам или чему-то еще, где интервалы могут варьироваться.
Для фиксированного количества дней проблема довольно проста. Единственная сложность заключается в том, что период времени не является точным кратным интервалу. Так что я бы сказал, найти первую дату в интервале, в который происходит день выплаты жалованья. Затем найдите количество дней между этим и концом периода времени, разделите на интервал и отбросьте все дроби.
Например: человеку платят каждый понедельник. Сколько дней оплаты между 1 марта и 12 апреля? Найдите первый понедельник в этом диапазоне. Скажем, он выпадает на 4 марта. Затем рассчитайте количество дней с 4 марта по 12 апреля. Это будет 39. 39/7 = 5 и дробь. Поэтому ему платят еще 5 чеков на общую сумму 6.
Для ежемесячной оплаты, я думаю, вам нужно разделить первый и последний месяц. Затем вы можете посчитать количество месяцев в середине и умножить на количество выплат в месяц. Тогда для первого и последнего подсчитайте, сколько в них трудного пути.