using static System.Console;
using System;
public class Program {
public static void Main() {
WriteLine(AddBusinessDays(DateTime.Now, 8));
WriteLine(AddBusinessDays(new DateTime(2015, 10, 26), 15));
}
public static DateTime AddBusinessDays(DateTime date, int days) {
if (days < 0) throw new ArgumentException("days cannot be negative", "days");
if (days == 0) return date;
if (date.DayOfWeek == DayOfWeek.Saturday) {
date = date.AddDays(2);
days -= 1;
} else if (date.DayOfWeek == DayOfWeek.Sunday) {
date = date.AddDays(1);
days -= 1;
}
date = date.AddDays(days / 5 * 7);
int extraDays = days % 5;
if ((int)date.DayOfWeek + extraDays > 5) extraDays += 2;
return date.AddDays(extraDays);
}
}
//https://pt.stackoverflow.com/q/94496/101
dXNpbmcgc3RhdGljIFN5c3RlbS5Db25zb2xlOwp1c2luZyBTeXN0ZW07CgkJCQkJCnB1YmxpYyBjbGFzcyBQcm9ncmFtIHsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkgCXsKCQlXcml0ZUxpbmUoQWRkQnVzaW5lc3NEYXlzKERhdGVUaW1lLk5vdywgOCkpOwoJCVdyaXRlTGluZShBZGRCdXNpbmVzc0RheXMobmV3IERhdGVUaW1lKDIwMTUsIDEwLCAyNiksIDE1KSk7Cgl9CgoJcHVibGljIHN0YXRpYyBEYXRlVGltZSBBZGRCdXNpbmVzc0RheXMoRGF0ZVRpbWUgZGF0ZSwgaW50IGRheXMpIHsKCQlpZiAoZGF5cyA8IDApIHRocm93IG5ldyBBcmd1bWVudEV4Y2VwdGlvbigiZGF5cyBjYW5ub3QgYmUgbmVnYXRpdmUiLCAiZGF5cyIpOwoJCWlmIChkYXlzID09IDApIHJldHVybiBkYXRlOwoJCWlmIChkYXRlLkRheU9mV2VlayA9PSBEYXlPZldlZWsuU2F0dXJkYXkpIHsKCQkJZGF0ZSA9IGRhdGUuQWRkRGF5cygyKTsKCQkJZGF5cyAtPSAxOwoJCX0gZWxzZSBpZiAoZGF0ZS5EYXlPZldlZWsgPT0gRGF5T2ZXZWVrLlN1bmRheSkgewoJCQlkYXRlID0gZGF0ZS5BZGREYXlzKDEpOwoJCQlkYXlzIC09IDE7CgkJfQoJCWRhdGUgPSBkYXRlLkFkZERheXMoZGF5cyAvIDUgKiA3KTsKCQlpbnQgZXh0cmFEYXlzID0gZGF5cyAlIDU7CgkJaWYgKChpbnQpZGF0ZS5EYXlPZldlZWsgKyBleHRyYURheXMgPiA1KSBleHRyYURheXMgKz0gMjsKCQlyZXR1cm4gZGF0ZS5BZGREYXlzKGV4dHJhRGF5cyk7Cgl9Cn0KCi8vaHR0cHM6Ly9wdC5zdGFja292ZXJmbG93LmNvbS9xLzk0NDk2LzEwMQ==