Я работал над проектом, в котором дата рассчитывается на основе количества дней, добавленных в текущую DateTime.Now. Я использую несколько функций, основанных на этой работе: business dates calculation, и так как для этого требуется расчет рабочих дней (выходные дни или праздники не рассчитаны, праздники кодируются в файл конфигурации приложения), счет должен начинаться с текущей даты «сейчас» или в предыдущий рабочий день, если старт находится в выходной день или в выходной день. Файл current всегда перемещает вперед на следующий рабочий день перед началом подсчета. Если дата начала сегодня, счет начнется завтра.день минус один метод для расчета рабочего дня C#
Мои требования, например: начальный день 1/21/2012 - суббота. Добавляется значение 10 дней. Итоговая дата должно быть 2 февраля. Это значит, что рабочий день для начала расчета - пятница 20 января + 9 дней = 10 дней. Другим примером могло бы стать начало в воскресенье 22 января, переход к 20 января и добавление 9 дней с тем же результатом. При условии, что счет не начинается по выходным или праздничным дням, он должен пропустить их и прийти к следующему расчетному рабочему дню.
Проблема, с которой я сталкиваюсь, заключается в том, что мой проект должен рассчитать на основе текущей даты или вернуться к предыдущему рабочему дню, если начало отсчета - выходные или праздничные дни.
Я думаю, что файл класса очень ясен, но я не могу найти способ заставить подсчет начать в текущий рабочий день или сделать шаг назад к предыдущему рабочему дню, если начало отсчета - выходные или праздничные дни ,
Пожалуйста, взгляните на код в ссылке. Я попытался добавить отрицательные значения в параметр addDays в нескольких существующих методах; в моей форме я попытался заставить значение dateTimePicker вычесть день и множество других трюков в течение всего файла класса, что приводит к сбою.
Любые советы или помощь были бы очень признательны!
код в случае нажатия кнопки:
//DateTime.Today.AddDays(-4);
DateTime date = dateTimePicker1.Value;
// dateTimePicker1.Value.AddDays(-2);
XDateTime sDate = new XDateTime(dateTimePicker1.Value.ToShortDateString(), XDateTimeType.Business);
string Str = textBox2.Text.Trim();
string Str2 = textBox3.Text.Trim();
double Num;
bool isNum = double.TryParse(Str, out Num);
bool isNum2 = double.TryParse(Str2, out Num);
label6.Text = "";
//Test whether textBox contains a number or some other character. Fails if not a number.
if (isNum)
{
short days = Convert.ToInt16(textBox2.Text);
sDate.AddBusinessDays(days);
lblTodaysDate.Text = " Substantial Completion Date: " + sDate.Date.ToString("MMMM d, yyyy");
label3.Text = "";
if (isNum2)
{
short days2 = Convert.ToInt16(textBox3.Text);
sDate.AddBusinessDays(days2);
label6.Text = " Physical Completion Date: " + sDate.Date.ToString("MMMM d, yyyy");
label5.Text = "";
}
else
label5.Text = "Please enter numbers only!";
return;
}
else
label3.Text = "Please enter numbers only!";
return;
0 Вы знаете, что произошло с этим вопросом? У меня была аналогичная проблема, но я решил создать функцию под названием «AddWorkDays» (byVal days как Integer, byVal Holidays as List (DateTime)). Таким образом, я могу передать праздники, которые я хочу пропустить для этой функции. Это похоже на то, как вы настроены, каждый 'XDateTime' сохраняет свои собственные праздники. – Origin
Пожалуйста, разместите здесь какой-нибудь код, показывающий вашу попытку метода, который дает вам проблемы. –
Добавил событие нажатия кнопки в исходный вопрос. Извините, я не уверен, как разместить в комментарии код. То, что мне нужно, - это день, когда начнется подсчет даты с даты выбора времени, а не на следующий рабочий день. Благодаря! – gary7