打折周末,找出日期的工作日数量?

时间:2013-10-24 06:19:49

标签: c#

我要求仅在工作日发送电子邮件。要求是在数天之后向用户发送升级电子邮件,条件是对星期六和星期六进行折扣。周日。

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

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

此致 斯利拉姆

2 个答案:

答案 0 :(得分: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扩展实现。

答案 1 :(得分: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;

}