Калькулятор разницы дат
Результат
Всего дней
- Годы
- 1
- Месяцы
- 0
- Дни
- 0
- Всего недель
- 52,1 недели
Разницу дат легко сложить и легко посчитать неправильно. От 31 января до 1 марта — 29 дней, и большинство назовёт это одним месяцем и одним днём, но прибавление одного месяца к 31 января даёт 28 февраля, поэтому наивное вычитание с заимствованием из месяцев выдаёт либо один месяц и минус один день, либо ноль месяцев. Этот калькулятор печатает промежуток четырьмя способами: всего дней, всего недель и разбор на годы, месяцы и дни, который усекается так же, как календарь.
Сколько длятся день, неделя, месяц, квартал и год
| Промежуток | Дней |
|---|---|
| День | 1 |
| Неделя | 7 |
| Месяц | 28 – 31 |
| Квартал | 90 – 92 |
| Год | 365 или 366 |
Только первые две строки — константы. Месяц длится от 28 до 31 дня, а квартал — от 90 до 92, поэтому промежуток в 90 дней равен ровно одному кварталу только тогда, когда начинается в подходящем месяце. Именно поэтому разбор выше считается по календарю, а не делением.
Формула
всего дней = целые дни от начальной даты до конечной; разбор берёт наибольшее число полных месяцев, которое не перелетает через конечную дату
- всего дней
- Целые дни между двумя датами; сам начальный день не считается, конечный считается
- всего недель
- Всего дней, делённое на 7 и оставленное с одним знаком после запятой, а не округлённое до целых недель
- месяцы
- Полные месяцы, которые укладываются, — считая по календарю, а не блоками по 30 дней
- дни
- То, что осталось после этих полных месяцев — всегда короче следующего за ними месяца
Считайте здесь, сколько дней осталось до срока, сколько длился проект или верна ли цифра, которую назвал кто-то другой. Доверять стоит ответу в днях: разбор на годы, месяцы и дни описывает тот же промежуток в календарных единицах, поэтому 365 дней читается как один год, а 364 дня — как одиннадцать месяцев и тридцать дней: два числа, которые выглядят противоречиво и оба описывают правду. Чего страница не умеет — считать только рабочие дни или трактовать дату до 1582 года иначе, чем пролептический григорианский календарь. Число полных лет и полных месяцев между датами отдельной строкой не выделяется: и то и другое видно в разборе.
Разобранные примеры
С 1 января 2026 г. по 1 января 2027 г.
- Целые дни: 2026 год невисокосный, поэтому от 1 января 2026 г. до 1 января 2027 г. — 365 дней: начальный день не считается, конечный считается
- Ход по месяцам: укладывается ровно один год и попадает точно на конечную дату, поэтому годы равны 1, а месяцы и дни — 0
- Всего недель: 365 ÷ 7 = 52,14, печатается с одним знаком как 52,1, а не округляется до 52
- Всего дней — опора: оно считается первым и никогда не выводится из разбора
Чистый случай, где оба прочтения совпадают точно. Следующий пример — тот, где они расходятся.
С 31 января 2026 г. по 1 марта 2026 г.
- Целые дни: 28 дней февраля плюс 1 день марта — это 29
- Один месяц от 31 января усекается до 28 февраля, а это всё ещё раньше конечной даты, поэтому месяцев набирается 1
- Два месяца от 31 января дали бы 31 марта, то есть дальше 1 марта, поэтому месяцы останавливаются на 1
- Остаток от 28 февраля до 1 марта — 1 день, и разбор читается как один месяц и один день
Это тот случай, который вычитание с заимствованием из месяцев делает неправильно: оно сравнивает числа 31 и 1, занимает и выдаёт либо один месяц и минус тридцать дней, либо ноль месяцев и двадцать девять дней. Ни то, ни другое не складывается обратно в конечную дату.
С 29 февраля 2024 г. по 28 февраля 2025 г.
- 2024 год високосный, а 2025 — нет, поэтому между датами 365 дней, хотя номер дня падает с 29 до 28
- Один год от 29 февраля 2024 г. — это 28 февраля 2025 г.: год в календаре не равен фиксированному числу дней
- Ход попадает точно на конечную дату, поэтому месяцы и дни равны 0
- Всего дней равно 365 — столько же, сколько в первом примере, хотя каждая дата внутри промежутка на день раньше
Промежуток ровно в 365 дней может быть годом, а может и не быть — смотря откуда он начинается. Именно поэтому инструмент печатает оба прочтения, а не выбирает одно.
Ограничения
Разбор — это описание, а не перевод единиц. Месяц длится от 28 до 31 дня, поэтому 30 дней читаются как один месяц в одной паре дат и как ноль месяцев в другой, и правило здесь такое: прибавлять целые календарные месяцы, пока следующий не перелетит через конечную дату. Другие инструменты берут другое правило и разойдутся с этим на день-два на той же паре дат. У общего числа дней такой свободы нет. Ничего здесь не считает рабочие дни и не пропускает государственные праздники.
Частые вопросы
- Сколько дней между двумя датами?
- Считайте целые дни от начальной даты до конечной, причём начальный день не считается, а конечный считается. С 1 января 2026 г. по 1 января 2027 г. — 365 дней, потому что 2026 год невисокосный. Именно этот порядок счёта заставляет промежуток внутри одного дня читаться как ноль, а не как один, и ему же следуют остальные инструменты дат на этом сайте.
- Сколько месяцев и дней с 31 января по 1 марта?
- Один месяц и один день. Прибавление одного месяца к 31 января усекается до 28 февраля, а это всё ещё не дотягивает до 1 марта, и прибавление двух месяцев даёт 31 марта, то есть перелёт. Остаток от 28 февраля до 1 марта — один день. Вычитание с заимствованием из месяцев даёт вместо этого минус тридцать дней.
- Входит ли начальная дата в счёт?
- Нет: начальная дата — это день перед началом счёта, а конечная входит. Поэтому один и тот же день читается как ноль, а с 1 по 2 января — как один день. Это тот же порядок счёта, что и в калькуляторах рабочих дней и прибавления дней, поэтому числа на тех страницах сходятся с числами на этой.
- Почему год иногда 365 дней, а иногда 366?
- Потому что длина года в календаре не фиксирована, как и длина месяца. С 29 февраля 2024 г. по 28 февраля 2025 г. — 365 дней, и разбор называет это одним годом, потому что прибавление одного года к началу попадает в конец. Промежуток, внутри которого есть високосный день, даёт 366 дней и тоже читается как один год.
- Можно ли поставить более позднюю дату первой?
- Да, если конечная дата раньше начальной, они меняются местами, поэтому ответ одинаков в любом порядке. Знаковая разница — это другой инструмент; здесь печатается размер промежутка, а именно он и нужен для срока или длительности проекта. Число полных месяцев от порядка тоже не зависит.
Источники
- relativedelta — the dateutil module — dateutil project documentation
- ECMAScript Language Specification: Numbers and Dates — Ecma International