【问题标题】:Calculate End Date when specific duration of days given [duplicate]给定特定天数时计算结束日期[重复]
【发布时间】:2015-11-28 05:46:56
【问题描述】:

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

开始日期:02/09/2015 天数:5

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

结束日期 = 08/09/2015

谢谢你,

【问题讨论】:

  • DateTime.AddDays()?
  • @David: weekends 应该排除

标签: c# date


【解决方案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;

【讨论】:

  • 感谢您的帮助~
【解决方案2】:

假设您的开始日期是工作日,只需添加 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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-08-21
    • 2012-04-06
    • 2018-05-11
    • 2016-11-12
    • 1970-01-01
    • 2019-12-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多