ho un tipo enum chiamato PaymentFrequency
i cui valori indicano il numero di pagamenti per anno sono stati fatti ... Così hoQuanti giorni aggiungere per "semi-mensile"
public enum PaymentFrequency
{
None = 0,
Annually = 1,
SemiAnnually = 2,
EveryFourthMonth = 3,
Quarterly = 4,
BiMonthly = 6,
Monthly = 12,
EveryFourthWeek = 13,
SemiMonthly = 24,
BiWeekly = 26,
Weekly = 52
}
Sulla base di NumberOfPayments
, PaymentFrequency
e FirstPaymentDate
(di tipo DateTimeOffset) Voglio calcolare LastPaymentDate
. Ma io sto avendo problema capire quante unità di tempo (giorni, mesi) per aggiungere in caso di Semimonthly ...
switch (paymentFrequency)
{
// add years...
case PaymentFrequency.Annually:
LastPaymentDate = FirstPaymentDate.AddYears(NumberOfPayments - 1);
break;
// add months...
case PaymentFrequency.SemiAnnually:
LastPaymentDate = FirstPaymentDate.AddMonths((NumberOfPayments - 1) * 6); // 6 months
break;
case PaymentFrequency.EveryFourthMonth:
LastPaymentDate = FirstPaymentDate.AddMonths((NumberOfPayments - 1) * 4); // 4 months
break;
case PaymentFrequency.Quarterly:
LastPaymentDate = FirstPaymentDate.AddMonths((NumberOfPayments - 1) * 3); // 3 months
break;
case PaymentFrequency.BiMonthly:
LastPaymentDate = FirstPaymentDate.AddMonths((NumberOfPayments - 1) * 2); // 2 months
break;
case PaymentFrequency.Monthly:
LastPaymentDate = FirstPaymentDate.AddMonths(NumberOfPayments - 1);
break;
// add days...
case PaymentFrequency.EveryFourthWeek:
LastPaymentDate = FirstPaymentDate.AddDays((NumberOfPayments - 1) * 4 * 7); // 4 weeks (1 week = 7 days)
break;
case PaymentFrequency.SemiMonthly:
// NOTE: how many days in semi month? AddMonths (0.5) does not work :)
LastPaymentDate = FirstPaymentDate.AddMonths((NumberOfPayments - 1) * 0.5); // 2 weeks (1 week = 7 days)
break;
case PaymentFrequency.BiWeekly:
LastPaymentDate = FirstPaymentDate.AddDays((NumberOfPayments - 1) * 2 * 7); // 2 weeks (1 week = 7 days)
break;
case PaymentFrequency.Weekly:
LastPaymentDate = FirstPaymentDate.AddDays((NumberOfPayments - 1) * 7); // 1 week (1 week = 7 days)
break;
case PaymentFrequency.None:
default:
throw new ArgumentException("Payment frequency is not initialized to valid value!", "paymentFrequency");
}
Così, quanti giorni/mesi devo usare quando si utilizza Semimonthly? Questo è possibile anche senza conoscere il numero esatto di giorni per ogni mese in mezzo? Oppure è davvero semplice, e ho appena finito la caffeina e non vedo foresta per gli alberi :)
Qual è il tuo fabbisogno aziendale per semestrale? Quali due giorni al mese? Sono riparati? O semplicemente sempre 2 giorni diversi a 15 giorni di distanza (ad es.2 & 17, 3 & 18, 4 & 19, 5 e 20, ecc.) –
@James Michael Hare Diciamo il 1 ° e il 16 ° a titolo di domanda. Penso di sapere dove sta andando ... – zam6ak
E sai per certo che il tuo primo mese di pagamento scenderà sempre al 1 ° posto? –