Обновлено:

Формула расчета дней

Какая формула расчета дней между датами?

Самая короткая формула расчета дней выглядит так:

  • календарные дни (исключая начальную дату):
    Дни = Дата₂ − Дата₁
  • календарные дни (включительно, обе границы считаем днями):
    Дни = Дата₂ − Дата₁ + 1

Здесь важно уточнить, что «Дата» – это не строка вида 12.03.2026, а число, которое однозначно соответствует дню в календаре (например, порядковый номер дня или серийное число даты, как в Excel/Google Sheets).

Пример (календарные дни, включительно):
с 10.03.2026 по 12.03.2026: 12 − 10 + 1 = 3 дня (10, 11 и 12 марта).

День начала периода
День окончания
Параметры расчёта
Влияет на +1/-1 в формуле
0 дней
0 полных недель
0 дней остаток
Формула для Excel / Google Sheets
=B1-A1+1
Как получено число?
Разница в JDN:
Применено правило:
Использована формула:

Калькулятор выше полезен, когда нужно быстро получить разницу в календарных днях или в рабочих днях и заранее выбрать правило: считать ли начальный и/или конечный день. Обычно параметры сводятся к двум датам, режиму (календарные/рабочие) и опциям включения границ; результат возвращается числом дней, а иногда дополнительно – количеством недель и «остатком» дней.

Что именно считается «днями»: три распространённых правила

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

  1. Сколько дней прошло от события A до события B.
    Тогда обычно стартовую дату не включают: Дата₂ − Дата₁.

  2. Сколько календарных дат попадает в период (например, срок аренды «с… по…»).
    Тогда чаще считают включительно: Дата₂ − Дата₁ + 1.

  3. Сколько рабочих дней в интервале (график 5/2 или иной, плюс праздники).
    Здесь уже недостаточно простой разницы дат – нужен учет дней недели и праздничных исключений.

Если в документе написано «в течение 10 дней», отдельно проверьте, что имеется в виду: календарные или рабочие, и включается ли день наступления события (это уже юридическая интерпретация, а не формула).

Формула расчета дней через порядковый номер дня (универсально)

Когда даты представлены как порядковые номера дней (serial day / day count), разница считается простым вычитанием.

На практике удобный способ получить такой номер – использовать алгоритм Julian Day Number (JDN) для григорианского календаря. Он превращает дату Y-M-D в целое число, а затем разница дней – это разница этих чисел.

JDN для григорианской даты:

Пусть:

  • Y – год (например, 2026),
  • M – месяц (1–12),
  • D – день месяца (1–31).

Тогда (целочисленные деления – «вниз»):

a = (14 - M) div 12
y = Y + 4800 - a
m = M + 12*a - 3

JDN = D + (153*m + 2) div 5 + 365*y + y div 4 - y div 100 + y div 400 - 32045

После этого:

  • дней между датами (исключая начало): JDN₂ − JDN₁
  • дней включительно: JDN₂ − JDN₁ + 1

Этот подход хорош тем, что одинаково работает:

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

Источник для ориентира по JDN: описание алгоритмов преобразования дат широко приводится в справочниках по календарным вычислениям и, например, в Wikipedia (Julian day).

Как посчитать дни «вручную» без JDN: когда даты в одном году

Если обе даты в одном году, можно считать через «номер дня в году».

  1. Сначала найдите номер дня в году для каждой даты:

N = D + (сумма дней в месяцах до M) + поправка_на_високосность

Поправка на високосность применяется для дат после февраля:

  • если год високосный и месяц M > 2, добавьте +1,
  • иначе +0.
  1. Затем:
  • между датами: N₂ − N₁
  • включительно: N₂ − N₁ + 1

Длины месяцев (григорианский календарь):

  • 31 день: январь, март, май, июль, август, октябрь, декабрь
  • 30 дней: апрель, июнь, сентябрь, ноябрь
  • февраль: 28 или 29 (в високосный год)

Как проверить високосный год (формула)

Год Y високосный, если выполняется:

  • Y делится на 400
    или
  • Y делится на 4 и не делится на 100

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

Формулы для Excel и Google Sheets (самые практичные)

Если ячейки имеют тип «Дата», Excel/Sheets хранят их как серийное число (дней от базовой даты), поэтому формулы максимально простые.

Календарные дни между двумя датами

  • исключая начало:
    =B1-A1
  • включительно:
    =B1-A1+1

Где A1 – дата начала, B1 – дата окончания.

DATEDIF (если нужен «готовый» подсчет дней)

  • =DATEDIF(A1,B1,"d")

Функция встречается и в Excel, и в Google Sheets. В Excel она исторически «скрытая» (не всегда в подсказках), но работает в большинстве версий.

Рабочие дни (5/2) и праздники

  • рабочие дни между датами (обычно включительно):
    =NETWORKDAYS(A1,B1,Праздники)
  • прибавить N рабочих дней к дате:
    =WORKDAY(A1,N,Праздники)

В русской локали названия могут быть переведены (например, «ЧИСТРАБДНИ», «РАБДЕНЬ») – зависит от версии и настроек. Праздники обычно передают диапазоном дат, которые нужно исключить дополнительно.

Формула рабочих дней без табличных функций (логика расчёта)

Если нужно именно «формулу/алгоритм», рабочие дни можно посчитать через полные недели и остаток.

Обозначим:

  • s – дата начала,
  • e – дата окончания,
  • считаем включительно.
  1. Общее число календарных дней: T = e − s + 1

  2. Полные недели и остаток:

  • W = T div 7
  • R = T mod 7
  1. База по полным неделям: Рабочие_в_полных_неделях = 5 * W (для графика 5/2)

  2. Остаток R добираем по дням недели:

  • пусть dow(s) – номер дня недели для s (например, Пн=1 … Вс=7),
  • тогда для i = 0..R-1 добавляем 1, если день (dow(s)+i) попадает в диапазон Пн–Пт.

В виде суммы индикаторов: Рабочие = 5*W + Σ I(день_недели ∈ {Пн,Вт,Ср,Чт,Пт})

  1. Праздники (если есть список дат H) учитываются так: Рабочие_итог = Рабочие − (количество дат из H, попавших на будний день внутри [s,e])

Такой подход полезен для программирования и проверки результатов «черного ящика», но на практике проще пользоваться готовыми функциями или калькулятором.

Частые ошибки в расчетах дней (и как их избежать)

Смешали «между» и «включительно».
Формулы отличаются всего на +1, но юридически это может быть критично. Сначала фиксируйте правило, потом считайте.

Посчитали по времени, а нужен календарный день.
Например, от 01.03 23:00 до 02.03 01:00 прошло 2 часа, но календарных дат две. Для «календарных дней» обычно важна смена даты, а не 24 часа.

Не учли часовой пояс/летнее время (в IT-задачах).
Если считаете по секундам (timestamp / 86 400), переходы времени могут дать «нецелые сутки». Для календарных дней в приложениях обычно переводят время в локальную дату и считают разницу дат.

Рабочие дни посчитали без праздников.
Выходные – это только часть исключений. Праздничные дни и переносы зависят от региона и года, поэтому список исключаемых дат лучше явно задавать.

Короткое резюме и следующий шаг

  • Если даты представлены числом (серийным номером), формула расчета дней – это вычитание: Дата₂ − Дата₁, а для «включительно» добавьте +1.
  • Для универсального «чистого» преобразования даты в число подходит алгоритм JDN.
  • Для рабочих дней нужна логика по неделям/дням недели и (при необходимости) список праздников.

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

Часто задаваемые вопросы

Почему иногда получается разное число дней «между датами»?

Обычно причина в разных правилах включения границ: считать ли начальную дату, конечную или обе. Например, от 10.03 до 12.03: «между» (исключая начало) – 2 дня, а «включительно» – 3 дня. Перед расчетом закрепите правило в договоре/ТЗ.

Как понять, високосный год или нет, чтобы правильно считать дни?

Год високосный, если делится на 4, но не делится на 100, либо делится на 400. Например, 2024 – високосный, 2100 – нет, 2000 – да. Это правило григорианского календаря и влияет на февраль (28 или 29 дней).

Как посчитать рабочие дни, если есть праздники и переносы?

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

Как посчитать разницу в днях, если даты с временем (часы и минуты)?

Если есть время, сначала определите правило округления: считать только полные 24 часа, округлять вверх до целых дней или считать календарные смены дат. Технически разница считается по таймстампам (секунды), но на результат влияют часовые пояса и переходы на летнее/зимнее время.

Можно ли в Excel обойтись без DATEDIF и всё равно посчитать дни?

Да. Для календарных дней достаточно вычесть даты: B1-A1 (при формате «Дата»). Для подсчета «включительно» добавляют +1. Для рабочих дней чаще используют NETWORKDAYS/ЧИСТРАБДНИ, а для прибавления рабочих дней – WORKDAY/РАБДЕНЬ.

Как прибавить к дате N дней и получить дедлайн?

Для календарного дедлайна используют дату_дедлайна = дата_старта + N (если дата в виде серийного числа). Если нужно прибавить рабочие дни, применяют правило исключения выходных и праздников; в таблицах это обычно WORKDAY/РАБДЕНЬ с перечнем праздников.

  1. Расчет сроков онлайн: калькулятор дней и дат
  2. Рассчитать дни между датами – онлайн калькулятор
  3. Счетчик лет: онлайн-калькулятор времени между датами
  4. Рассчитать время: онлайн-калькулятор разницы дат и durations
  5. Калькулятор дней: точный расчет времени между датами
  6. Расчет календарных дней – точный онлайн калькулятор