0

平日のみメールを送信する必要があります。要件は、土曜と日曜を割引するという条件付きで、数日後にエスカレーション メールをユーザーに送信することです。

たとえば、最初のエスカレーションが 2013 年 10 月 22 日に送信され、19 日後に次のエスカレーションを送信する必要がある場合、すべての週末を割引する必要があり、2013 年 11 月 18 日にメールを送信する必要があります。(これにより、すべての週末が割引になり、平日の 19 日だけでメールが送信されます)。

どうすればこれを達成できるかについて、誰かが論理を共有できますか? スタック オーバー フローでは、特定の 2 つの日付の間の週末を検索する投稿が表示されました。しかし、私の場合、週末を割引して、指定された日数の平日にのみメールを送信する必要があります。

よろしく、 スリラム

4

2 に答える 2

0

このコードは機能しました!!

 private DateTime GetNextEscalationDate(DateTime lastEscalationDate, int elapsedDays)
 {
 int count = 0;
 int j = elapsedDays;

 for (int i = 1; i <= j; i++)
 {
     if ((lastEscalationDate.AddDays(i).DayOfWeek == DayOfWeek.Saturday) ||
     (lastEscalationDate.AddDays(i).DayOfWeek == DayOfWeek.Saturday))
     {
         count += 2;
         j += 2;
     }
 }
 DateTime weekendDiscountedDate = lastEscalationDate.AddDays(elapsedDays + count);
 return weekendDiscountedDate;

}

于 2013-10-24T08:36:32.717 に答える
0

疑似コード (演習として C# に変換するのはあなたに任せます)。開始日が平日であることを前提としています。

function FindTheNextWeekDayAfter (date today, int workingDays) returns date
   result = today;
   while workingDays>0
     result = result.AddDays(1)
     if result.IsWeekDay() && ! result.IsHoliday()
       workingDays--

  return result

これは、DateTime 拡張機能として実装できます。

于 2013-10-24T06:27:10.090 に答える