Количество рабочих дней между двумя датами

Количество рабочих дней между двумя датами

Калькулятор онлайн расчета количества рабочих дней

Калькулятор достаточно простой, но тем не менее на мой взгляд очень удобный, для подсчета количества рабочих дней между произвольными датами.

Калькулятор использует данные о переносе рабочих дней и праздничных днях, которые содержатся в ежегодных постановлениях Правительства РФ.

Таких калькуляторов конечно же много и мы в этом не оригинальны, но есть несколько изюминок которые я думаю Вам понравятся, и могут использоваться для создания других калькуляторов.

Первая изюминка: Мы можем не учитывать праздничные даты которые содержатся в постановлениях Правительства РФ, а учитывать только выходные дни( для России суббота и воскресенье)

Вторая изюминка: Для тех стран, у которых, выходными днями являются другие дни недели ( например в Израиле, выходные дни это пятница и суббота), можно указать какие дни недели будут являться выходными. Это удобно не только для других стран, но и для местного применения, когда известно что работаем по сменам, каждые четверг, субботу и вторник.

Третья изюминка: Мы можем использовать совершенно произвольную систему выходных, заданную в определенном виде ( отображение этой функции нет на сайте, хотя функционал рабочий) и для всех желающих, построить производственный календарь для Беларуси, Казахстана или Сербии не составит затруднения.

Побочным приятным эффектом этого калькулятора является еще и расчет количества дней между двумя датами. Причем разницу она высчитывает так, как это делается в бухгалтерии и отделе кадров. То есть если человек работает с 1 июля по 8 июля, то получается 8 дней. Так как последний день считается рабочим.

В отличии от математических и астрономических калькуляторов, где при тех же данных получается 7 суток. Эта ошибка в одни сутки появляется из-за того что в кадровых решениях последний день, он всегда является рабочим и его надо учитывать, а в точных и абстрактных калькуляторах считается, что 8 июля наступает в полночь (0:0:0) и разница между полночью 1 июля и полночью 8 июля ( или 23 часа 59 минут 59 секунд 999 миллисекунд, 999999 микросекунд и т.д 7 июля) составит ровно 7 суток.

Основной принцип, которого придерживается бот, это периодичность выходных в течении недели. Если это соблюдается, калькулятор выдаст результат, на который вы рассчитывали.

Очень жаль, что в постановлениях Правительства РФ до сих пор не внедряют QR-код, где для машинной обработки были бы указаны все праздники на текущий код. Это бы упростило бы работу определенному кругу лиц.

Праздники и переносы на территории РФ учитываются с 2010 по 2021 год включительно.

Для пользователей кому необходимо рассчитать первую рабочую дату после отпуска или командировки или другого промежутка времени, обратите внимание на вот этот калькулятор Дата выхода на работу из отпуска, декрета онлайн

Синтаксис

Для Jabber клиентов

rab_d дата.начала; дата.конца;неделя

неделя — дает полную информацию о том, как рассчитывать рабочие дни и часы. Неделя состоит из семи символов 0 или 1, где каждый символ несет свою роль. 0- человек работает, 1 — человек не работает(выходной). Если неделя пустая, то используется код 0000011 — то есть суббота и воскресенье выходной.

Хотелось бы заметить, что это календарная неделя и этот показатель показывает, как в течении недели вы отдыхаете. Нумерация недели у нас начинается с нуля и это день — понедельник, потом идет вторник -1, среда-2 и т.д.

дата начала — дата в виде ДД/ММ/ГГГГ — обозначает начало диапазона, для которого рассчитывается количество рабочих дней

дата конца — дата в виде ДД/ММ/ГГГГ — обозначает конец диапазона, для которого рассчитывается количество рабочих дней

ВНИМАНИЕ! Дата может быть введена и через точку или через слеш. Через точку удобнее вводить на сотовых и планшетах, а через слеш удобнее на компьютере на клавиатуре справа (панели цифровой)

Примеры использования

Рассчитать количество рабочих и выходных дней в 2014 году.

rab_d 1/1/2014;31/12/2014

в ответ получим

Рассчитать количество рабочих и выходных дней прошедшие с 2 июля 2010 года по 25 октября 2013 года

rab_d 2/7/2010;25/10/2013

В ответ получим

Рассчитать количество рабочих и выходных дней если сотрудник работает по сменно вторник, четверг, воскресенье с 20 января 2013 года по 10 февраля 2014 года. Учитывать государственные праздники.

rab_d 20/1/2010;10/2/2014;0101001

В ответ получаем

Предыдущий пример, только не учитывать государственные праздники. Как вариант использования сменные дежурства, охрана и т.п.

rab_d 20/1/2010;10/2/2014;0101001!

Заметьте что стоит восклицательный знак, говорящий о том, что не надо учитывать праздники и переносы дней. В ответ получаем

5 калькуляторов даты и времени

Расчеты времени постоянно встречаются в повседневной жизни: от вычисления дней до значимой даты до подсчета времени отпуска или периода выплат по банковскому кредиту. Сборник онлайн-калькуляторов поможет вам легко оперировать таким сложным параметром как время.

Время

Управление временем – это не название магического заклинания из компьютерной игры, а вполне себе реальная способность, снискавшая огромную популярность у бизнесменов и инвесторов. Управление временем или тайм-менеджмент – это техника расчета временных отрезков для эффективного выполнения определенного объема работ. Благодаря грамотному планированию рабочего времени и периодов отдыха люди, использующую технику мани-менеджмента, успевают сделать намного больше тех, кто не следит за временем и страдает от прокрастинации.

Естественно, тайм-менеджмент – это наука не только о распределении времени. К наиболее важным навыкам, позволяющим грамотно организовать работу, относятся:

    и управлять ресурсами;
  • расставлять приоритеты и находить главные цели;
  • распределять время и анализировать результаты.

Делегирование – это перепоручение работы подчиненным или коллегам. Многие неэффективные руководители полагают, что никто не сделает лучше, чем они сами. Естественно, что заваленные кучей незначимой работы они не успевают выполнять приоритетные задачи, в результате чего и становятся неэффективными.

Поиск приоритетов – не менее важная вещь. Принцип Парето гласит, что 80 % результата обеспечивают 20 % усилий. На практике это означает, что важно вовремя выполнять только те задачи, от которых зависит 80 % успеха. Как правило, таких задач немного, не строго 20 % как обещает принцип Парето, но обычно в диапазоне от 20 до 40 %. Именно умение отделять зерна от плевел и создают продуктивных руководителей и бизнесменов.

Наиболее известной, эффективной и в тоже время самой простой техникой считается «Помодоро». Это прием тайм-менеджмента, согласно которому работа выполняется через строго отведенные промежутки времени (обычно 20 минут), каждый из которых сопровождается пятиминутным отдыхом. Свое название техника «Помодоро» получила потому, что ее создатель отмерял промежутки времени при помощи кухонного таймера в виде помидора. С тех пор модернизированные версии тайм-менеджмента легли в основу успеха видных представителей бизнеса.

Расчет времени

Использовать принципы мани-менеджмента можно не только при решении ежедневных задач, но и при планировании крупных проектов, выполнение которых занимает недели или месяцы. Прежде всего следует выяснить, к какому сроку необходимо сдать проект или какое количество времени на него выделено. Рассмотрим подробнее.

Количество дней между двумя датами

Данный инструмент позволяет определить количество дней, укладываемых между двумя датами. К примеру, 20 октября 2017 года вам задали проект, который необходимо закончить к 18 января 2018 года. Идти к календарю и считать время не слишком удобно и проще воспользоваться калькулятором: достаточно выбрать тип программы и вбить обе даты. В ответе видим, что на выполнение плана у вас есть 2 месяца и 29 дней. Не слишком информативно при планировании. Программа выражает это время так же в днях, неделях или месяцах. Смотрим. У вас есть ровно 90 дней или 12 рабочих недель. С этим уже можно построить эффективную систему тайм-менеджмента и не допустить дедлайна.

Какая дата будет через n дней

Еще один удобный инструмент для эффективной работы. Крупный проект на работе могут поручить с пометкой «выполнить в течение 50 дней после принятия заказа». Это большое количество времени, но вновь бежать к календарю и высчитывать его не слишком удобно. Используем калькулятор. Допустим, заказ был принят в работу 28 апреля 2017 года. До какого дня его требуется сдать заказчику? Поменяем тип калькулятора и вычислим дату дедлайна. Это будет 17 июня 2017, суббота. Имея под рукой общее количество дней и дату икс, вы можете легко распределить силы для своевременного выполнения работы.

Какая дата была n дней назад

Данный калькулятор не пригодится вам в работе, но наверняка придет на помощь в личной жизни. Представьте, что вы получили смс-сообщение, в котором ваша пассия поздравляет вас с 100 днем совместной жизни. Это важная дата, которую забывать не стоит, поэтому лучше воспользоваться программой и узнать ее. Вы получили смску 4 июля 2017 года, теперь легко узнать, когда же вы съехались со своей пассией. Итак, выбираем тип калькулятора, вводим дату и юбилейные 100 дней. Ваша памятная дата – 26 марта 2017, воскресенье. Стоит обвести эту дату в календаре.

Временные величины

Данный калькулятор позволяет перевести одни временные величины в другие. При помощи программы можно выразить минуты в дни, недели в года или века в тысячелетия. На практике это может пригодиться при расчете рабочих часов для фрилансеров и свободных художников. Например, у вас есть 28 рабочих дней на выполнение очередного заказа. Это 672 часа. Отнимем время на сон 28 × 8 = 224, время на перерывы и отдых 28 × 4 = 112 и получим, что у вас есть 336 часов на эффективную работу. С этим уже можно работать и использовать техники тайм-менеджмента для продуктивного труда.

Сумма/разница во времени

Данная программа дарит возможность сложить часы или дни и вычислить общее время в месяцах, неделях, днях, минутах, секундах и даже в миллисекундах. Это занимательный калькулятор, который на практике можно использовать для подсчета времени, необходимого на выполнение нескольких видов работ или для вычисления свободного времени, оставшегося после завершения работы.

Расчет количества дней между датами в Эксель

Довольно часто при работе датами в таблице Эксель возникает необходимость определения временного промежутка между ними, который измеряется в днях. В Excel существуют различные способы для выполнения данной задачи. Давайте рассмотрим их.

Расчет разности дат

Для корректной работы с датами сперва нужно задать ячейкам соответствующий формат. В противном случае возможны проблемы с корректным отображением дат, что сделает невозможным их дальнейшую обработку.

На самом деле Эксель способен самостоятельно определять формат ячейки после ввода в нее информации. Но этот механизм не всегда срабатывает как надо, поэтому стоит заранее самостоятельно настроить формат ячеек или проверить, правильно ли его определила программа.

  1. Для начала выделяем целевой диапазон ячеек, воспользовавшись зажатой левой кнопкой мыши.

Формат ячеек - Дата

  • по умолчанию мы должны оказаться во вкладке “Число” (если это не так, переключаемся в нее);
  • в списке “Числовые форматы” находим позицию “Дата” и кликаем на нее;
  • в поле “Тип” выбираем нужный образец представления данных, в соответствии с которым они будут отображаться на листе;
  • нажимаем OK.

Метод 1: использование формулы вычитания

Начнем, пожалуй, с самого простого способа – вычитания двух дат, представленного в виде обычной формулы.

  1. Вносим две даты, между которыми будем определять разницу в днях, в две разные ячейки отформатированного ранее диапазона.Количество дней между двумя датами в Эксель
  2. Теперь выделим ячейку, в которой планируем отобразить результат нашего вычисления.
    Определение количества дней между двумя датами в ЭксельВАЖНО: Количество дней обозначается простым целым числом, следовательно, ячейка для его вывода должна иметь отличный от “Дата” формат, а именно – “Общий“. В противном случае полученный результат будет отображаться в формате даты, что не позволит оценить корректность проведенных вычислений. Для определения текущего формата ячейки достаточно взглянуть на соответствующее поле, расположенное в разделе инструментов “Число” на ленте вкладки “Главная“.

Формула расчета количества дней между датами в Эксель

  • в итоговую ячейку вводим знак “=“;
  • кликаем по ячейке с конечной датой (более поздней);
  • вводим с клавиатуры символ “” (знак минус);
  • кликаем по ячейке с начальной датой.

Метод 2: функция РАЗНДАТ

Следующий способ – это определение разницы между двумя датами при помощи функции РАЗНДАТ.

Функция имеет следующий синтаксис: =РАЗНДАТ(начальная_дата;конечная_дата;единица).

Если с двумя первыми аргументами все понятно – их суть соответствует названию, то на третьем (“единица“) стоит остановиться подробнее, так как именно он позволяет варьировать результат использования функции, выбирая единицу расчета разницы между датами:

  • d” — количество дней между датами;
  • m” — количество полных месяцев между датами;
  • y” — количество полных лет между датами;
  • YM” — разница между датами в месяцах;
  • MD” — разница между датами в днях, без учета месяцев и лет;
  • YD” — разница между датами в днях, без учета лет.

В нашем случае покажем пример использование аргумента “YD”, так как целью расчета является определение количества дней между датами в пределах года.

Основное отличие от простого вычитания одной даты из другой – в порядке следования аргументов функции: в качестве первого аргумента выбирается начальная (более ранняя дата), а в качестве второго – конечная (более поздняя). Опишем ниже алгоритм вычислений.

  1. Выбираем целевую ячейку, проверяем ее формат по способу, описанному выше.
  2. Описываемая функция отсутствует в Мастере функций, поэтому вводим ее в ячейку вручную, строго придерживаясь синтаксиса.Формула функции РАЗНДАТ в Эксель
  3. Жмем Enter и проверяем полученный результат. Как мы видим, он аналогичен тому, который мы получили, используя простую формулу вычитания. Значит все сделано верно.Разница между двумя датами с помощью функции РАЗНДАТ

Метод 3: функция ЧИСТРАБДНИ для определения количества рабочих дней

Третий описываемый метод позволяет вычислить количество дней с дополнительным условием – исключением из него нерабочих (выходных и праздничных) дней.

В данном методе используется функция ЧИСТРАБДНИ со следующим синтаксисом: =ЧИСТРАБДНИ(нач_дата;кон_дата;[праздники]).

Первые два аргумента аналогичны функции РАЗНДАТ. Последний аргумент является опциональным, то есть функция будет работать и без его указания. Однако именно он позволяет учесть в критериях вычисления нерабочие праздничные дни, так как по умолчанию из общего количества уберутся только субботы и воскресенья.

Приступаем к вычислениям:

  1. Так как описываемая функция присутствует в списке Мастера функций, воспользуемся им для большей наглядности: встаем на ячейку, куда будем выводить результат и щелкаем по кнопке “Вставить функцию” (fx), расположенной слева от строки формул.Вычисление количества рабочих дней между двумя датами
  2. В открывшемся окне Мастера функций:
    • выбираем категорию “Полный алфавитный перечень”;
    • находим и кликаем в списке операторов по строке “ЧИСТРАБДНИ”;
    • нажимаем ОК.Функция ЧИСТРАБДНИ в Эксель
  3. Перед нами появится окно аргументов функции. Здесь можно ввести адреса ячеек вручную или, находясь в поле для заполнения значений аргумента, кликнуть по нужной ячейке на листе. Выбрав начальную и конечную дату, а также указав праздничный день (адрес ячейки), нажимаем ОК.Аргументы функции ЧИСТРАБДНИ в Эксель
  4. Предположим, в этот раз мы заранее не задали формат итоговой ячейки как “Общий”. Тогда мы получим результат, отображающийся в виде даты.Количество рабочих дней между двумя датами с помощью функции ЧИСТРАБДНИ
  5. Следовательно, необходимо снова проверить формат по алгоритму, описанному выше и изменить его на “Общий”.Вычисление количества рабочих дней между двумя датами с помощью функции ЧИСТРАБДНИ

Заключение

С помощью описанных выше методов можно достаточно легко посчитать количество дней между двумя датами, как с наличием дополнительных критериев, так и без них. Формула вычитания и функция РАЗНДАТ прекрасно подойдут для простого подсчета дней, а функция ЧИСТРАБДНИ поможет с расчетом количества именно рабочих дней между датами. Окончательный выбор зависит от поставленной перед пользователем задачи.

Еще раз о рабочих днях. Быстрый способ расчета в запросах

Работа с производственными календарями, рабочими графиками часто встречается в практике разработки. Большинство задач можно свести к двум: 1) Добавить к дате (отнять от даты) некоторое количество рабочих дней и 2) найти разницу в рабочих днях между двумя датами. Несмотря на кажущуюся простоту, в этих задачах достаточно подводных камней, как методических, так и технологических. Естественно эта тема не была обойдена вниманием разработчиков типовых конфигураций и членов нашего сообщества. Простой поиск дает несколько результатов:

На мой взгляд, предлагаемые решения обладают теми или иными недостатками. В их числе:

  • сложность полученных запросов: применение временных таблиц, использование группировок больших таблиц, получаемых в результате соединения
  • не все решения хорошо работает с некоторыми входными данными, например в качестве входных параметров-дат могут быть использованы выходные дни
  • некоторые решения предполагают дополнительную обработку программным кодом промежуточных данных, полученных в результате запроса
  • часто решается узкая задача, т.е. решение не универсально.

Предлагаю свой вариант решения.

Постановка задачи:

Предположим, на предприятии ведется учет выполняемых работ. Каждая работа выполняется целое число дней, всегда начинается в начале дня, а заканчивается через несколько дней в конце дня. Продолжительность работ может быть от 1 дня, до нескольких лет (важность условия этого будет упомянута ниже). Необходимо иметь инструмент, позволяющий выполнять расчеты дат начала, окончания работ, продолжительностей работ, временных промежутков между работами. Все расчеты выполнять в рабочих днях. Решение должно позволять использование его в запросах.

В чем могут быть «подводные камни» при решении? Например токарь работает по стандартному рабочему графику — пятидневке. 01 апреля 2019 он начинает изготавливать деталь №1, тратит на ее изготовление 5 дней, и начинает изготавливать следующую деталь №2. Когда он закончит изготовление детали №1? Когда начнет изготавливать деталь №2? Казалось бы в обоих случаях ответ: через 5 рабочих дней после 01 апреля, т.е. к 01.04.2019 надо прибавить 5 рабочих дней. Но в первом случае ответ — 05.04.2019, а во втором — 08.04.2019.

Решение:

Решение поставленной задачи неожиданно получилось довольно простым.

Для учета рабочих графиков (производственных календарей) используем вспомогательный регистр сведений:

РабочийГрафик — ссылка на справочник «РабочиеГрафики» — если на предприятии используется несколько графиков (пятидневка, пятидневка с праздниками, семидневка и т.п.)

Дата — дата графика (без времени)

ЭтоРабочийДень — флаг рабочий/нерабочий день

КолВоДнейСНачалаПериода — Число рабочих дней, прошедших до начала даты записи, начиная с определенной, наперед заданной даты. В моем примере используется 01.01.2000.

Регистр необходимо заполнить на весь период, в пределах которого будут производится расчеты.

Теперь для нахождения разницы дат нам надо в регистре найти два числа, соответствующие этим датам и определить их разницу. Для добавления к дате некоторого числа рабочих дней, надо в регистре найти соответствующее дате число, добавить к нему число рабочих дней, и по результату найти в регистре соответствующую дату рабочего дня. Осталось учесть упомянутые выше сложности и получим следующее:

Примеры использования

Как видим запросы получаются довольно простыми, не используются ни временные таблицы, ни группировки с агрегатными функциями, ни постобработка. Ничего не мешает производить расчет в запросе для нескольких записей. В прилагаемом файле реализован пример отчета по выполненным работам: дана дата начала, предполагаемая плановая продолжительность работы и фактическая дата завершения, определяется плановая дата завершения и отставание факта от плана.

Может возникнуть вопрос: оправдано ли с точки зрения производительности использование дополнительного регистра такой структуры, ведь при изменении флага рабочего/выходного дня надо пересчитывать все записи с большей датой? Я считаю, что вполне. Во-первых, изменение производственного календаря происходит обычно не чаще одного раза в месяц, а полный пересчет и сохранение набора записей за 100 лет(

40000 записей) по выбранному графику занимает считанные секунды. А во-вторых, выгода от использования быстрого массового расчета как правило с лихвой перекроет все время, потраченное на предварительную подготовку.

А что же БСП?

Опытный разработчик, использующий БСП, может сказать: «Так ведь в БСП реализовано почти что то же самое!». Да, действительно в БСП есть аналогичный регистр:

Есть также программный интерфейс модулей «ГрафикиРаботы», «КалендарныеГрафики» с функциями «РазностьДатПоКалендарю», «ДатыПоГрафику» и т.п. Но если присмотреться, то можно увидеть, что в регистре имеется измерение «Год». То есть в этом регистре отсчет количества дней идет с начала каждого года. Когда мы работаем с датами в пределах одного года, то подход при расчете совпадает с рассмотренным. Но если даты попадают в разные года, а особенно если рассматривается промежуток в несколько лет, то алгоритм получается весьма сложным. Все интересующиеся могут самостоятельно сравнить объем программного кода в библиотеке и в предложенном решении. Скорее всего, разработчики БСП стремились к упрощению процедуры заполнения — каждый год рабочего графика заполняется отдельно и не зависит от других. Но в результате мы получаем существенное усложнение алгоритмов при решении практических задач. Я бы рекомендовал использовать регистры БСП как источник для заполнения регистра «РабочиеДни», а все дальнейшие операции производить уже с ним.

UPD 25.06.2019:

Для конфигураций с БСП добавлено заполнение регистра на основе данных из типовых объектов — регистра КалендарныеГрафики и справочника Календари. В процессе обработки заполняется регистр за период с 2000 г. по примерно 2109 г. — 40000 дней.

К статье приложена информационная база, в которой реализован описанный функционал, примеры отчетов, а также процедура заполнения и пересчета регистра.

Читайте также  СЗВ-ТД: корректировка или отмена сведений о трудовой
Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!:

Adblock
detector