ToolActToolAct

Калькулятор Сложения/Вычитания Дат

Добавляет или вычитает дни, недели, месяцы, годы из даты

Добавить или вычесть дни из даты

Что такое Калькулятор Сложения/Вычитания Дат?

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

Как использовать

Как использовать

  1. Введите начальную дату
  2. Выберите прибавление (вперёд) или вычитание (назад)
  3. Введите значение и выберите единицу (день/неделя/месяц/год)
  4. Нажмите «Calculate result», чтобы получить целевую дату

Правила расчёта дат

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

Применение

Вычисление дедлайна от известной начальной датыВыберите начальную дату, укажите прибавление или вычитание и примените дни, недели, месяцы или годы, чтобы получить одну результирующую дату для гарантий, продлений, повторных обращений или оценок сроков доставки. Поскольку переход через границу месяца обрабатывается встроенным средством работы с датами браузера, граничные случаи вроде 31 января плюс один месяц разрешаются в 28 или 29 февраля без серверного календарного запроса.
Быстрые смещения для типичных окон планированияПосле появления результата кнопки +7, +30, +90 дней и +1, +3 месяца, +1 год позволяют быстро сравнить распространённые периоды проверки без повторного ввода значений. Начальная дата и выбранное смещение остаются внутри страницы; запрос на бэкенд не отправляется, поэтому годовщины, испытательные сроки, визовые заявки или даты медицинских повторных приёмов можно рассчитать на общем или чужом устройстве, не раскрывая исходные данные.
Помните: календарная арифметика — это не правило рабочих днейИнструмент работает с календарными датами и переходами через месяц/год средством работы с датами. Он не учитывает праздники, выходные, корпоративные календари и специфичные для юрисдикции правила дедлайнов. Фиксируйте начальную дату, смещение и результирующую дату вместе, чтобы расчёт был понятен позже.
Перепроверка перехода через конец месяца (31 января + 1 месяц)Когда начальный день превышает длину целевого месяца, убедитесь, как калькулятор обрабатывает переход, чтобы продления подписок и годовщины контрактов не сдвинулись незаметно на другую дату. Тестируйте граничные случаи вроде 31 января плюс один месяц на реальную длину февраля или 31 марта минус один месяц на 31-дневный февраля високосного года перед использованием результата в биллинговой или HR-системе.
Сопоставьте результат с часовым поясом для распределённых командФиксируйте дату отсчёта вместе с явным часовым поясом или смещением UTC, ведь дедлайн, сохранённый без контекста, может сдвинуться на день, когда рецензенты из других регионов переинтерпретируют его. Например, дата окончания контракта «2026-07-15» означает совершенно разные моменты времени для команды в Токио и в Лос-Анджелесе, поэтому сохранение смещения рядом с датой предотвращает незаметный суточный сдвиг, часто возникающий при межрегиональных передачах.

Технический принцип

Арифметика дат в этом инструменте построена на пролептическом григорианском календаре, реализованном объектом ECMAScript Date. Месяцы в JavaScript нумеруются с нуля (январь — 0, декабрь — 11), что является главным источником ошибок со сдвигом на единицу в коде работы с датами. Прибавление дней выполняется напрямую: new Date(d.getTime() + n * 86_400_000). Прибавление месяцев сложнее, поскольку в месяцах 28, 29, 30 или 31 день: стандартный идиоматический вызов date.setMonth(date.getMonth() + n) переполняется, когда результирующий месяц короче исходного дня, поэтому 31 января + 1 месяц даёт 3 марта, а не 28 февраля (движок переносит лишние 3 дня в март). Этот инструмент обнаруживает переполнение, сравнивая date.getMonth() после setMonth, и ограничивает день последним днём целевого месяца при необходимости, что совпадает с поведением moment.js, date-fns и Temporal Plain Date.add(). Високосные годы следуют стандартному правилу григорианского календаря: год является високосным, если он делится на 4, за исключением вековых лет, которые должны также делиться на 400. Таким образом, 1900 и 2100 — обычные годы, а 2000 был високосным и 2024 тоже. Это важно, когда расчёт пересекает 29 февраля: 29 января + 1 месяц + 1 месяц в 2023 году даёт 29 марта, но в 2024 году переход попадает на 29 февраля (допустимая дата), а затем на 29 марта — без необходимости ограничения. Отсечка 1582 года для перехода от юлианского к григорианскому календарю здесь игнорируется, поскольку пролептический григорианский календарь распространяет правила назад бесконечно; даты до 15 октября 1582 года технически анахроничны, но всё равно вычисляются корректно для современных целей. Обработка часовых поясов — отдельное измерение: Date хранит момент UTC во внутреннем представлении и применяет часовой пояс IANA хост-системы (например, America/New_York, Asia/Shanghai) только при вызове .getDate(), .month() или .toLocaleString(). Из этого следуют две ловушки: (1) дата, созданная из ISO-строки без суффикса Z ("2026-06-10"), разбирается как полночь UTC, но "2026-06-10T00:00:00" без Z разбирается как полночь местного времени, и один и тот же date.getDate() может вернуть 9 или 10 в зависимости от смещения пользователя; (2) переходы на летнее/зимнее время весной (пропуск 02:00–03:00) и осенью (повтор 01:00–02:00) делают некоторые вычисления неоднозначными, поэтому прибавление «+24 часа» может привести к показаниям часов, отстоящим на 23 или 25 часов. Для вычислений с рабочими днями, только будними днями или с учётом праздников результат календаря необходимо дополнять обработкой регионального списка праздников (например, через пакет npm date-holidays или собственный календарь), а не полагаться на простой переход через границу.

  • Месяцы JS Date нумеруются с нуля: январь = 0, декабрь = 11; ошибка со сдвигом на единицу — самая частая ошибка.
  • Переполнение setMonth: 31 января + 1 месяц даёт 3 марта, а не 28 февраля; инструмент ограничивает день концом месяца, сравнивая getMonth() после setMonth.
  • Високосный год: делится на 4, но вековые годы должны также делиться на 400 (1900 — нет, 2000 — да, 2024 — да).
  • ISO 8601 без Z ("2026-06-10T00:00:00") разбирается как местное время; с Z — как UTC, и getDate() может вернуть другой день.
  • Переходы на летнее/зимее время создают 23-часовые и 25-часовые сутки; прибавление +24 ч не всегда равно одному календарному дню.
  • Вычисления на уровне дней точны через getTime() + n * 86_400_000; более крупные единицы каскадно проходят через setMonth/setFullYear с ограничением.
  • Вычисления с рабочими днями и праздниками должны быть добавлены поверх через региональную календарную таблицу, а не внутри движка.

Примеры

Прибавить 90 дней к начальной дате (триал / ревью OKR)

Начальная дата : 2026-01-15 (четверг)
Операция       : + 90 дней
Результат      : 2026-04-15 (среда)
Use case       : Окончание 90-дневного триала, ревью OKR за Q1

Вычесть 6 месяцев от сегодняшней даты

Начальная дата : 2026-06-11
Операция       : - 6 месяцев
Результат      : 2025-12-11
Use case       : Анализ за полгода назад — продления или churn

Прибавить 2 года 3 месяца 5 дней (срок визы)

Начальная дата : 2026-01-15
Шаг 1 : + 2 года     -> 2028-01-15
Шаг 2 : + 3 месяца   -> 2028-04-15
Шаг 3 : + 5 дней     -> 2028-04-20
Результат      : 2028-04-20

Перенос на конец месяца: 31 января + 1 месяц

Начальная дата : 2026-01-31
Операция       : + 1 месяц
Результат      : 2026-02-28  (в феврале 2026 — 28 дней)

Проверка високосного года:
Начальная дата : 2028-01-31
Операция       : + 1 месяц
Результат      : 2028-02-29  (2028 — високосный год)

Вычесть 14 дней для напоминания о платеже

Продление подписки  : 2026-07-01
Операция            : - 14 дней
Отправить напоминание: 2026-06-17

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

Как работает прибавление «месяцев» к датам в конце месяца?

В месяцах разное количество дней, поэтому добавление 1 месяца к 31 января неоднозначно. Калькулятор следует стандартному соглашению: округлить до последнего дня целевого месяца — 31 января + 1 месяц = 28 февраля (или 29 в високосный год). Это совпадает с поведением функции EDATE в Excel.

Учитываются ли выходные и праздники?

По умолчанию да — «прибавить 5 дней» добавляет 5 календарных дней. Для расчёта рабочих дней (с пропуском выходных и опционально праздников) используйте отдельный инструмент «Калькулятор рабочих дней»; эта страница для чисто календарной арифметики.

Можно ли прибавить годы, месяцы, недели и дни одновременно?

Да. Результат применяет их в порядке годы → месяцы → недели → дни — это соглашение используется большинством библиотек дат, включая JavaScript-предложение Temporal. Порядок имеет значение: «1 месяц и 30 дней», прибавленные к 1 января, дадут другую дату, чем «30 дней и 1 месяц».

Как обрабатывается переход на летнее время?

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

Какой диапазон дат поддерживается?

JavaScript Date охватывает ±100 000 000 дней от 1970 года, что приблизительно соответствует годам с -271 821 до 275 760. Калькулятор обрабатывает любую историческую или далёкую будущую дату в этом диапазоне. Для дат до григорианской реформы (1582) учитывайте, что местные гражданские календари могли отличаться.

Чем вычитание двух дат отличается от прибавления отрицательного числа дней?

Ничем — вычитание N дней — это то же самое, что прибавление -N. Если нужна разница между двумя датами, используйте инструмент «Разница дат». Эта страница для одностороннего расчёта: начальная дата плюс или минус интервал.

Загружаются ли мои данные?

Нет. Расчёт выполняется в вашем браузере. Введённые данные стираются при обновлении страницы.

Связанные Инструменты

Калькулятор Разницы Дат

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

Калькулятор Возраста

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

Калькулятор Рабочих Дней

Бесплатный онлайн калькулятор рабочих дней. Подсчитывает фактические рабочие дни в диапазоне дат, исключая выходные и праздники. Идеален для планирования проектов.

Инструмент преобразования меток времени

Бесплатный онлайн-конвертер Unix-меток времени в дату и обратно. Поддержка секунд, миллисекунд и нескольких часовых поясов — удобно для отладки и логов.

Таймер обратного отсчета

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

Калькулятор Срока Годности

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