我要求仅在工作日发送电子邮件。要求是在数天之后向用户发送升级电子邮件,条件是对星期六和星期六进行折扣。周日。
例如,如果第一次升级是在2013年10月22日和19天之后发送的,如果需要发送下一次升级,那么我需要打折所有周末,并应该在2013年11月18日发送电子邮件。 (这个周末折扣,只需要19个工作日并发送电子邮件)。
有人可以分享我如何实现这一目标的逻辑吗?在堆栈溢出流程中,我可以看到帖子找到两个给定日期之间的周末。但在我的情况下,我需要打折周末,并在工作日仅发送电子邮件给出天数。
此致 斯利拉姆
答案 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;
}