C# 给定指定的工作日时如何查找目标日期

C# 给定指定的工作日时如何查找目标日期,c#,.net,datetime,C#,.net,Datetime,我有一种情况,用户定义了交货的工作日和运输日。 当给出预计到达日期(ETA)时,我需要根据中转日计算预计到达日期(ETD) 例如: ETA is 17/Jul/2013, Transit Day: 10 Days, Delivery Day: Tue / Fri 通过使用AddDays(-10),ETD将为2013年7月8日(周一)。由于交货日期不是星期二或星期五,系统需要向后查看日历 因此,系统必须将5/Jul(Fri)作为ETD日期 归档此请求的最佳做法是什么?您可以根据用户的偏好在几天之

我有一种情况,用户定义了交货的工作日和运输日。 当给出预计到达日期(ETA)时,我需要根据中转日计算预计到达日期(ETD)

例如:

ETA is 17/Jul/2013, Transit Day: 10 Days, Delivery Day: Tue / Fri
通过使用
AddDays(-10)
,ETD将为
2013年7月8日(周一)
。由于交货日期不是星期二或星期五,系统需要向后查看日历

因此,系统必须将
5/Jul(Fri)
作为
ETD
日期


归档此请求的最佳做法是什么?

您可以根据用户的偏好在几天之间迭代,直到找到下一个交付日。您可以在这里看到这样一个示例:

public DateTime GetLastPosibleDate(DateTime DateTime,List days)
{
DateTime dt=DateTime;
如果(!days.Any(d=>d==dt.DayOfWeek))
{
dt=GetLastPosibleDate(datetime.AddDays(-1),天);
}
返回dt;
}
公共DateTime EstimatedDeliveryDate(DateTime到达、int transitDays、List deliveryDays)
{
return GetLastPosibleDate(arrival.AddDays(-transitDays),deliveryDays);
}
用法:

var arrival = new DateTime(2013,07,17);
var deliveryDays = new List<DayOfWeek>(){DayOfWeek.Tuesday, DayOfWeek.Friday};
var result = EstimatedDiliveryDate(arrival, 10, deliveryDays);
var到达=新日期时间(2013,07,17);
var deliveryDays=new List(){DayOfWeek.周二,DayOfWeek.周五};
var结果=估计的交货日期(到货,10天,交货日);

您的示例编码正符合我的要求!非常感谢你,达米思。
var arrival = new DateTime(2013,07,17);
var deliveryDays = new List<DayOfWeek>(){DayOfWeek.Tuesday, DayOfWeek.Friday};
var result = EstimatedDiliveryDate(arrival, 10, deliveryDays);