宿題のように聞こえますか?いいえ、ちがいます。私はこのためのロジックを作成しましたが、日付が何年にもわたる場合はそれほどパフォーマンスの高いものではありません。基本的にここにそれがどのように機能するべきかがあります、
StartDate: 1/1/2012
FinishDate: 1/10/2012
RecurringInterval: 2 ( In days)
出力は次のようになります。
1/6/2012
今日の日付(Date.Now
)が1/5/2012
(フォーマットを想定MM/dd/yyyy
)の場合。終了日に達するとチェックは終了します。指定された期間内に一致する日付がない場合は、今日の日付を返す必要があります。非常に単純ですが、効率的なものではありません。
これの何が問題になっていますか?
if (!_isRecurring)
return DateTime.UtcNow;
DateTime initialDate = _startDate;
DateTime finalDate = _finishDate;
int recurringDays = _recurringInteral;
/*
* start Date + recurring interval falls between start date and finishdate then get its date
*/
do
{
//add recurring day to start date
initialDate = initialDate.AddDays(recurringDays);
//check if it falls in between start days and end days
if(initialDate <= finalDate)
break;
} while (initialDate <= finalDate);
//return the first occurance of the recurring day
return initialDate;