在给定的特定持续时间内计算结束日期

时间:2015-09-02 16:00:18

标签: c# date

我正在开发c#.net解决方案,我必须根据提供的持续时间日期从日期时间选择器的开始日期计算结束日期。(不包括周末)

即。

  

开课日期:02/09/2015天:5

     

开始日期= 02/09/2015 + 5天(不包括周末)

     

结束日期= 2015年9月8日

谢谢你,

2 个答案:

答案 0 :(得分:1)

试试这个,

var startDate = DateTime.Now;  // Put your actual start date here
for (int i = 0; i < 5;)        // Put number of days to add instead of 5
{
    startDate = startDate.AddDays(1);
    if (startDate.DayOfWeek == DayOfWeek.Saturday || startDate.DayOfWeek == DayOfWeek.Sunday)
    {              
        continue;
    }
    i++;
}
var finalDate = startDate;

enter image description here

答案 1 :(得分:1)

假设您的开始日期是工作日,只需添加7天即可。任意天数的计算如下:

DateTime StartDate = new DateTime(2015, 9, 2);
DateTime EndDate = StartDate.AddDays(duration/5*7+duration%5);

假设我们有一个businessHolidays数组,我们也可以考虑这些:

for( var index = 0; index < businessHolidays.length; index++) {
   var holiday = businessHolidays[index];
   if (holiday.Date >= StartDate.Date && holiday.Date <= EndDate.Date) {
      EndDate.AddDays(1);
   }
}

最后,我们检查结果日期,看它是否属于周末。如果开始日期是周末或我们因假期推迟了日期,则必须这样做。

if ( EndDate.DayOfWeek == DayOfWeek.Saturday ) {
    EndDate.AddDays(2);
} else if ( EndDate.DayOfWeek == DayOfWeek.Sunday ) {
    EndDate.AddDays(1);
}