打折周末,并从某个日期中找出工作日的数量

  • 本文关键字:工作日 日期 周末 c#
  • 更新时间 :
  • 英文 :


我要求只在工作日发送电子邮件。要求是在天数后向用户发送升级电子邮件,条件是周六和周日打折。

例如,如果第一次升级是在 2013 年 10 月 22 日发送的,而在 19 天后,如果需要发送下一次升级,那么我需要对所有周末打折,并应在 2013 年 11 月 18 日发送电子邮件。(这打折了所有周末,只需要19个工作日并发送电子邮件)。

有人可以分享我如何实现这一目标的逻辑吗?在堆栈流中,我可以看到帖子以查找两个给定日期之间的周末。但就我而言,我需要在周末打折,并且仅在工作日发送电子邮件以达到给定的天数。

问候斯里拉姆

伪代码(我把它留给你把它翻译成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

这可以作为日期时间扩展实现。

这段代码有效!!

 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;

}

最新更新