Калькулятор количества дней
Результат
Всего дней
- Включая обе границы
- 31 дни
- Без конечной даты
- 30 дни
Калькулятор количества дней отвечает на вопрос, который оставляет открытым обычная разница дат: считается ли последний день. Введите две даты — и страница сразу покажет оба прочтения: дней между датами и дней включая последний день, а переключатель решит, какое из двух попадёт в главную строку. Три ночи с пятницы по понедельник — самый наглядный случай: поездка длится три ночи и четыре дня, и оба ответа верны, смотря что считать — число ночей или число дней. Даты можно вводить в любом порядке, потому что промежуток — это расстояние, у него нет направления. Двадцать девятое февраля — високосный день, и он считается как любой другой. По сути это калькулятор количества дней между двумя датами, который не выбирает за вас одну из двух конвенций, а показывает обе сразу: ошибка здесь почти всегда не арифметическая, а договорная, и стоит выяснить, какую из двух цифр имел в виду тот, кто её назвал.
Формула
дней между = число полуночей от более ранней даты до более поздней; дней включая = это же число + 1, потому что каждый из двух концов считается за целый день
- startDate
- Первая из двух дат в виде ГГГГ-ММ-ДД. Какая из них раньше, значения не имеет — порядок можно менять свободно
- endDate
- Вторая дата. Она не обязана быть позже первой, и ответ в любом случае одинаков
- includeEndDate
- Переключатель, который выбирает конвенцию: выключен — считаются дни между датами, включён — оба конца тоже. Он меняет только главную строку, две остальные показываются всегда
- totalDays
- Главное число, следующее за переключателем. Оно совпадает с одной из двух строк ниже и никогда не бывает третьим ответом
- inclusiveDays
- Число дней, когда и первый, и последний день засчитаны как день, — так считают табель посещаемости и курс приёма лекарства
- exclusiveDays
- Число дней строго между двумя датами — так считают ночи в гостинице и сутки аренды
Страница нужна всюду, где ошибка на единицу выглядит как ошибка в документе: гостиница, считающая за ночи, срок аренды, курс лекарства с первого дня по седьмой, заявление на отпуск, испытательный срок или срок уведомления, проект с оплатой за день. Два числа отличаются ровно на единицу, поэтому решите заранее, какое из них вы называете, — переключатель существует именно для того, чтобы оба прочтения были видны, а не подразумевались. Если нужна разбивка на годы, месяцы и дни или счёт, пропускающий выходные и праздники, это делает другая страница: здесь считаются все календарные дни подряд.
Разобранные примеры
Три ночи с пятницы по понедельник
- Путь с пятницы 2 января по понедельник 5 января пересекает три полуночи: те, что начинают субботу, воскресенье и понедельник
- Между датами это 3 дня — столько же ночей, и именно это число ставят в договор гостиница или аренда
- С обоими концами как днями получается 3 + 1 = 4 дня — так обычно и понимают табель или заявление на отпуск
- Переключатель здесь выключен, поэтому в главной строке стоит 3, а строка с обоими концами по-прежнему показывает 4
Оба числа описывают одну и ту же поездку, и ни одно из них не является округлением другого. Разница в один день — это и есть причина, по которой страница существует отдельно от простой разницы дат, а в описании бронирования будет та конвенция, которую выбрала сама гостиница.
Одна и та же дата, введённая дважды
- Между двумя одинаковыми датами не проходит ни одной полуночи, поэтому дней между ними 0
- С засчитанными концами получается 0 + 1 = 1: сама дата — это один день календаря
- Переключатель включён, поэтому главная строка показывает 1
- Выключите переключатель — и главная строка станет 0, а обе строки ниже не изменятся
Это самый широкий разрыв между двумя конвенциями в относительном выражении: 0 и 1. Заодно это случай, который простая разница дат выразить не может вовсе, потому что у неё нет способа сказать, считается ли сама дата.
Через високосный день
- 2024 год високосный, поэтому 29 февраля существует и лежит между двумя датами
- Дней между датами: 29 февраля стоит посередине, его нужно пересечь, значит на пути две полуночи и счёт равен 2
- С добавленными концами получается 3 дня, а переключатель выключен, поэтому в главной строке 2
- Та же пара дат в невисокосном году, например в 2026-м, даёт 1 день, потому что пересекать нечего
Високосный день нигде не выделен в отдельный случай: 29 февраля — просто дата, как любая другая, и счёт идёт по календарю. Стоит ввести эту пару один раз в високосный год и один раз в обычный, чтобы увидеть, что ответ принадлежит календарю, а не зашитому правилу.
Ограничения
Результат — это счёт целых календарных дней, поэтому неполный день в нём не появляется: с 9 утра одного дня до 9 утра следующего — это один день, и с 23 часов до часа ночи тоже один день, потому что читаются только даты, а время суток в поля вообще не вводится. Все дни подряд считаются рабочими, поэтому выходные и праздники попадают в счёт: количество рабочих дней — это другой вопрос и другой ответ. Разбивки на годы, месяцы и недели здесь нет, есть только два счёта в днях. Дата должна существовать: 30 февраля будет отклонено, а не перенесено на 1 марта. Поддерживаемый диапазон — с 1 января 1 года по 31 декабря 9999 года, и обе даты можно вводить в любом порядке, результат от этого не меняется.
Частые вопросы
- Какое из двух чисел мне нужно?
- То, которое соответствует предмету счёта. Берите дни между датами, когда каждый день — это ночь, сутки аренды или полные 24 часа с первого дня: поездка с пятницы по понедельник — это три ночи. Берите дни включая последний день, когда первый день сам является днём номер один, как в курсе лекарства, табеле или заявлении на отпуск. Числа отличаются ровно на единицу, поэтому неверно названное число видно сразу, и страница показывает оба, чтобы выбор можно было проверить, а не угадывать.
- Сколько дней в январе?
- Тридцать один, если считать с 1-го по 31-е с обоими концами, и тридцать, если считать дни между ними. Введите 1 января и 31 января: с включённым переключателем главная строка покажет 31, с выключенным — 30, а строка с обоими концами всё равно покажет 31. Длина месяца здесь не отдельный случай: любая пара от первого числа до последнего работает так же.
- Считать первый день, последний или ни один из них?
- Именно это решает переключатель, и обе конвенции одинаково употребительны. Дни между датами не засчитывают ни один из концов как отдельный день — так считает ночи гостиница; дни включая последний день засчитывают оба — так курс с 1-го по 7-е оказывается семидневным. Поскольку считаются оба прочтения, включение и выключение переключателя никогда не меняет две строки ниже: меняется только то, какую из них повторяет главная строка.
- Что будет, если поменять даты местами?
- Ничего. Промежуток — это расстояние, поэтому счёт одинаков независимо от того, какая дата введена первой, и отрицательного ответа тут не бывает. Если ввести 5 января как начало, а 2 января как конец, получатся ровно те же числа, что и в обратном порядке. Порядок важен только в формулировке ответа: с какого числа началась поездка — это другой вопрос, нежели сколько ночей она длилась.
- Это то же самое, что калькулятор разницы дат?
- Нет, и разница в том, что получается на выходе. Калькулятор разницы дат раскладывает промежуток на годы, месяцы и дни — то есть отвечает, насколько даты далеки друг от друга в календарных единицах. Здесь же считается, сколько дней покрывает промежуток, по одной из двух конвенций, и разбивка намеренно не приводится, чтобы одно и то же число не публиковалось на двух страницах. Если нужен счёт, пропускающий выходные и праздники, это калькулятор рабочих дней, и число там будет меньше.
Источники
- Federal Rules of Civil Procedure, Rule 6 — Computing and Extending Time — Legal Information Institute, Cornell Law School
- Calendar FAQ — The Gregorian Calendar — Claus Tøndering, Calendar FAQ
- RFC 3339: Date and Time on the Internet: Timestamps — IETF