Как считать дни в диапазоне дат: полное руководство

Иван Корнев·03.05.2026·5 мин

Чтобы узнать количество дней в периоде включительно, используйте формулу: (Дата окончания − Дата начала) + 1. Если период считается исключительно (только полные сутки между датами), формула проще: Дата окончания − Дата начала. Выбор метода зависит от задачи: для отпуска и больничных дни считаются включительно, а для расчета «возраста» задачи или срока годности — часто исключительно.

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

Оглавление

В чем разница: включительно и исключительно

Главная путаница возникает из-за того, считаем ли мы пограничные даты (начало и конец периода) как полноценные дни.

Метод «Включительно» (Inclusive)

Мы считаем и первый, и последний день диапазона.

  • Пример: Период с 1 мая по 5 мая.
  • Дни: 1, 2, 3, 4, 5 мая.
  • Итого: 5 дней.
  • Логика: Человек работал (или болел) в оба этих дня.

Метод «Исключительно» (Exclusive)

Мы считаем разницу во времени между двумя точками. Часто это означает, что конечная дата не входит в расчет, либо считается только «чистое» время между событиями.

  • Пример: Период с 1 мая по 5 мая.
  • Дни: 1, 2, 3, 4 мая (5 мая — это момент окончания).
  • Итого: 4 дня.
  • Логика: Прошло 4 полных суток.

Быстрая проверка: Если дата начала совпадает с датой конца (например, 10 мая – 10 мая):

  • Включительно = 1 день.
  • Исключительно = 0 дней.

Где какой метод применяется

Выбор алгоритма диктуется не математикой, а предметной областью.

1. Кадровый учет и бухгалтерия (Включительно)

Здесь почти всегда используется подсчет включительно.

  • Отпуск: Если отпуск с 1 по 14 июня, вы получаете оплату за 14 календарных дней.
  • Больничный: Оплачивается каждый день нетрудоспособности, включая день открытия и день закрытия больничного листа.
  • Командировки: Оплачиваются суточные за каждый день нахождения в командировке, включая дни пути.

2. Проектное управление и сроки (Чаще исключительно)

В управлении задачами часто важно знать длительность процесса в «чистом» виде.

  • Дедлайны: Если задача поставлена 1 числа и должна быть готова к 5 числу, на работу есть 4 дня (1, 2, 3, 4). 5 число — день сдачи/проверки.
  • Срок действия предложения: «Предложение действует до 10 октября» обычно означает, что 10 октября оно еще активно (включительно), но если написано «действует 3 дня с 10 октября», то срок истекает 13-го.

3. Банковские проценты и аренда

Зависит от договора, но стандартная банковская практика (например, метод 30/360 или Actual/Actual) часто требует точного подсчета дней владения деньгами.

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

Формулы для Excel и Google Таблиц

Самый простой способ избежать ошибок — использовать встроенные функции. Предположим, дата начала в ячейке A1, дата конца в B1.

Тип расчетаФормулаПояснение
Включительно=B1-A1+1Простая разница дат плюс один день.
Исключительно=B1-A1Просто разность дат.
Только рабочие дни=ЧИСТРАБДНИ(A1; B1)Исключает выходные. Внимание: эта функция обычно считает границы включительно, проверьте версию Excel.
Универсальная (DATEDIF)=DATEDIF(A1; B1; "d")Возвращает количество полных дней (исключительно). Для включительно добавьте +1.

Ошибка #ЗНАЧ! Убедитесь, что ячейки A1 и B1 имеют формат «Дата». Если Excel воспринимает их как текст, формула вернет ошибку. Также проверьте, что дата конца (B1) больше или равна дате начала (A1).

Расчет в программировании (Python, JS)

При разработке софта важно помнить, что многие библиотеки возвращают разницу во времени (дельту), которая по умолчанию является «исключительной» для конечной точки.

Python

from datetime import date

d_start = date(2026, 5, 1)
d_end = date(2026, 5, 5)

# Исключительно (разница в днях)
delta_exclusive = (d_end - d_start).days  # Результат: 4

# Включительно
delta_inclusive = (d_end - d_start).days + 1  # Результат: 5

JavaScript

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

const start = new Date('2026-05-01');
const end = new Date('2026-05-05');

// Разница в миллисекундах
const diffTime = Math.abs(end - start);
// Перевод в дни (исключительно)
const diffDaysExclusive = Math.ceil(diffTime / (1000 * 60 * 60 * 24)); // 4

// Включительно
const diffDaysInclusive = diffDaysExclusive + 1; // 5

Частые ошибки при подсчете

  1. «Заборная ошибка» (Fencepost error) Самая распространенная логическая ошибка. Если вы ставите забор длиной 10 метров с столбами каждые 1 метр, вам нужно 11 столбов, а не 10. Так и с датами: между 1 и 5 мая проходит 4 интервала, но дней — 5. Всегда уточняйте, считаем мы «столбы» (дни) или «пролеты» (сутки между ними).

  2. Игнорирование високосных годов При ручном подсчете больших периодов (год и более) легко забыть, что в феврале 2024 или 2028 года было 29 дней. Используйте автоматизированные инструменты (Excel, код), они учитывают это автоматически.

  3. Путаница с часовыми поясами В международных проектах дата окончания в одном часовом поясе может все еще быть «вчера» в другом. Для юридических документов фиксируйте часовой пояс или используйте дату по UTC.

  4. Смешивание рабочих и календарных дней Фраза «срок исполнения 3 дня» может означать 3 календарных дня (включая выходные) или 3 рабочих дня. В договорах всегда уточняйте: «календарные дни» или «рабочие дни».

FAQ: популярные вопросы

Вопрос: Как считать срок, если он указан как «в течение 5 дней»? Ответ: По ГК РФ и общей деловой практике, течение срока начинается на следующий день после календарной даты или наступления события. Если уведомление получено 1 мая, срок «5 дней» начнет течь со 2 мая и истечет 6 мая. Однако лучше всегда прописывать конкретную дату окончания во избежание споров.

Вопрос: Считается ли день увольнения последним рабочим днем? Ответ: Да. Согласно ТК РФ, последний день работы сотрудника является днем увольнения. Этот день оплачивается и входит в стаж включительно.

Вопрос: Почему в Excel формула =B1-A1 дает правильный результат для отпуска, если нужно прибавлять 1? Ответ: Стандартная формула =B1-A1 считает разницу (исключительно). Для отпуска, больничного или аренды, где оплачивается каждый день присутствия, нужно обязательно добавлять единицу: =B1-A1+1. Если вы видите в готовых шаблонах другую логику, проверьте, не используются ли там специфические финансовые функции типа ДОЛЯГОДА.

Вопрос: Как посчитать количество месяцев между датами? Ответ: Используйте функцию =РАЗНДАТ(A1; B1; "m") в Excel. Она возвращает количество полных месяцев. Для включения неполного месяца логика усложняется и зависит от того, как вы определяете «полноту» месяца (по 30 дням или по фактическому календарю).