Excel Определить Выходной Или Рабочий День • Четвертый квартал
Расчет рабочих дней на C#
Обычной задачей является вычисление количества рабочих дней в пределе диапазона дат. В большинстве западных культур это дни с понедельника по пятницу, исключая субботу и воскресенье. Полученное число также должно исключать национальные праздники.
Расчет количества рабочих дней между двумя датами
Для начала создайте новый проект нового консольного приложения. Добавьте новый класс в проект с именем «BusinessDaysCalculator». Этот класс будет содержать код алгоритма.
Чтобы создать основу для нового метода, добавьте следующее объявление в класс BusinessDaysCalculator:
Первый из этих методов устранит любые проблемы с датой начала. Сначала будет проверен день недели. Если дата начала приходится на выходные, она будет перенесена на следующий понедельник. Во-вторых, часть времени в DateTime будет удалена. Чтобы создать этот метод, добавьте в класс следующее:
Аналогичный метод устранит проблемы с датой окончания. Разница здесь в том, что если дата приходится на субботу или воскресенье, она будет изменена на предыдущую пятницу.
Чтобы убедиться, что любые проблемы с датами ввода будут устранены до выполнения расчета, добавьте вызовы двух новых методов, добавив следующий код в метод расчета:
Проверка на наличие недопустимых диапазонов дат
Приведенный выше код гарантирует, что как дата начала, так и дата окончания допустимы для использования в алгоритме. Однако это не гарантирует, что сам диапазон действителен. Возможно, что дата начала наступает после даты окончания или что исходные даты, указанные в методе, приходятся на одни и те же выходные. В любом случае диапазон следует считать недопустимым.
Если диапазон неверен, мы просто вернем ноль. Чтобы включить эту окончательную проверку, добавьте следующий код в конец метода расчета. Код проверяет диапазон дат и возвращает ноль, если он неверен. Если он действителен, вызывается другой частный метод, который вычисляет количество рабочих дней в диапазоне.
Проверка, находится ли отпуск в пределах диапазона дат
Следующий частный метод, который мы добавим в класс, используется для определения того, влияет ли один отпуск на расчет. Этот метод возвращает логический результат, значение true указывает, что праздник находится в пределах диапазона дат и не приходится на выходные.
Добавьте следующий метод в класс BusinessDaysCalculator:
Подсчет количества праздничных дней в диапазоне дат
Если вы используете версию .NET framework, которая поддерживает запрос, интегрированный с языком (LINQ), вы можете заменить код в методе HolidayCount выражением LINQ. Приведенное ниже выражение подсчитывает количество праздничных дней, влияющих на общий расчет. Использование Distinct также гарантирует, что любые повторяющиеся праздники учитываются только один раз.
Заключительной задачей для завершения алгоритма является добавление метода CalculateDifference. Этот метод выполняет несколько шагов для определения количества рабочих дней в указанном диапазоне дат. Шаги следующие:
- Рассчитайте разницу в днях между двумя датами. Это достигается путем вычитания даты начала из даты окончания. Результатом вычитания является значение промежутка времени, содержащее количество дней в свойстве TotalDays. Значение будет включать начало, но не конец диапазона. Это будет исправлено позже, чтобы дать всеобъемлющий результат.
- Определите количество выходных дней, которые находятся в диапазоне, разделив количество дней на семь, отбросив любую дробь и сохранив только целое число. Если день недели даты окончания предшествует дню недели даты начала, значение недель увеличивается по мере наличия дополнительных выходных.
- Уменьшите значение разницы, чтобы удалить выходные. Разница уменьшается на количество недель, умноженное на два.
- Уменьшите значение разницы на количество праздничных дней в диапазоне.
- Добавьте единицу к результату, прежде чем возвращать его, чтобы сделать значение включающим.
Для тестирования алгоритма мы можем использовать метод Main. Добавьте код ниже, чтобы рассчитать количество рабочих дней в феврале 2024 года, при условии отсутствия праздников,
Чтобы использовать алгоритм и включить праздники в расчет, попробуйте выполнить следующее:
Как сделать график выхода на работу в excel?
- Рассчитайте разницу в днях между двумя датами. Это достигается путем вычитания даты начала из даты окончания. Результатом вычитания является значение промежутка времени, содержащее количество дней в свойстве TotalDays. Значение будет включать начало, но не конец диапазона. Это будет исправлено позже, чтобы дать всеобъемлющий результат.
- Определите количество выходных дней, которые находятся в диапазоне, разделив количество дней на семь, отбросив любую дробь и сохранив только целое число. Если день недели даты окончания предшествует дню недели даты начала, значение недель увеличивается по мере наличия дополнительных выходных.
- Уменьшите значение разницы, чтобы удалить выходные. Разница уменьшается на количество недель, умноженное на два.
- Уменьшите значение разницы на количество праздничных дней в диапазоне.
- Добавьте единицу к результату, прежде чем возвращать его, чтобы сделать значение включающим.
Если ячейка А1 содержит 4 июля. 2010, а ячейка А2 содержит б (что обозначает пятницу), то формула возвращает 9 июля, 2010. Это первая пятница после 4 июля 2010 года (дня, который приходится на воскресенье).
Публикуя свою персональную информацию в открытом доступе на нашем сайте вы, даете согласие на обработку персональных данных и самостоятельно несете ответственность за содержание высказываний, мнений и предоставляемых данных. Мы никак не используем, не продаем и не передаем ваши данные третьим лицам.