setMinutes() изменяет минуты в объекте Date, меняет существующую дату. При необходимости этот метод может сразу обновить не только минуты, но и секунды с миллисекундами.
Синтаксис
Базовая запись выглядит так:
date.setMinutes(minutesValue)
date.setMinutes(minutesValue, secondsValue)
date.setMinutes(minutesValue, secondsValue, msValue)
Где:
date- это объектDateminutesValue- новые минутыsecondsValue- необязательные секундыmsValue- необязательные миллисекунды
Что возвращает setMinutes()
Метод возвращает timestamp - количество миллисекунд с 1 января 1970 года.
const date = new Date(2025, 0, 15, 10, 20, 30, 400);
const result = date.setMinutes(45);
console.log(typeof result); // "number"
console.log(result === date.getTime()); // true
console.log(date.getMinutes()); // 45
Это важно: setMinutes() возвращает число, а не новый объект Date.
Простой пример
const date = new Date(2025, 0, 15, 10, 20, 30);
date.setMinutes(45);
console.log(date.getMinutes()); // 45
Здесь:
2025- год0- январь15- день месяца10- часы20- исходные минуты
После вызова метода минуты становятся 45.
Обычно используют значения от 0 до 59
В большинстве случаев в setMinutes() передают обычные минуты внутри часа:
0- начало часа30- середина часа59- последняя минута перед следующим часом
const date = new Date(2025, 0, 15, 10, 20, 30);
date.setMinutes(0);
console.log(date.getMinutes()); // 0
Но у setMinutes() есть полезная особенность: он умеет работать и со значениями вне этого диапазона.
Можно сразу изменить минуты, секунды и миллисекунды
У setMinutes() есть дополнительные аргументы.
С их помощью можно за один вызов изменить сразу несколько частей времени.
const date = new Date(2025, 0, 15, 10, 20, 30, 400);
date.setMinutes(45, 50, 900);
console.log(date.getMinutes()); // 45
console.log(date.getSeconds()); // 50
console.log(date.getMilliseconds()); // 900
Если дополнительные аргументы не передавать, текущие секунды и миллисекунды сохраняются.
setMinutes() меняет исходную дату
Это главное отличие от методов вроде getMinutes().
setMinutes() не просто читает значение, а изменяет сам объект Date.
const date = new Date(2025, 0, 15, 10, 20, 30);
date.setMinutes(45);
console.log(date.getMinutes()); // 45
Если объект даты используется в нескольких местах, это поведение важно учитывать.
Чем setMinutes() отличается от getMinutes()
Эти методы связаны, но делают разное.
getMinutes()читает минутыsetMinutes()изменяет минуты
const date = new Date(2025, 0, 15, 10, 20, 30);
console.log(date.getMinutes()); // 20
date.setMinutes(45);
console.log(date.getMinutes()); // 45
setMinutes() работает по локальному времени
Это важный момент.
Метод setMinutes() изменяет дату с точки зрения локального часового пояса пользователя.
Если нужно менять минуты именно по UTC, используют setUTCMinutes().
Чем setMinutes() отличается от setUTCMinutes()
Разница такая:
setMinutes()изменяет минуты по локальному времениsetUTCMinutes()изменяет минуты поUTC
Во многих случаях результат будет похожим, но при работе с серверным временем и ISO-строками лучше использовать тот метод, который соответствует вашей задаче.
Минуты могут выходить за пределы 0..59
Это одна из полезных особенностей Date.
Если передать значение больше 59, JavaScript автоматически перенесёт время на следующий час.
const date = new Date(2025, 0, 15, 10, 59, 0);
date.setMinutes(60);
console.log(date.getFullYear()); // 2025
console.log(date.getMonth()); // 0
console.log(date.getDate()); // 15
console.log(date.getHours()); // 11
console.log(date.getMinutes()); // 0
Здесь 60 означает переход на начало следующего часа.
Можно перейти и на предыдущий день
Если передать отрицательное значение, JavaScript сдвинет дату назад.
const date = new Date(2025, 0, 15, 0, 10, 0);
date.setMinutes(-1);
console.log(date.getFullYear()); // 2025
console.log(date.getMonth()); // 0
console.log(date.getDate()); // 14
console.log(date.getHours()); // 23
console.log(date.getMinutes()); // 59
Здесь время переходит на предыдущий день.
setMinutes() не меняет секунды сам по себе
Это полезно помнить.
Если передать только первый аргумент, метод меняет только минуты, а секунды и миллисекунды оставляет как есть.
const date = new Date(2025, 0, 15, 10, 20, 30, 400);
date.setMinutes(45);
console.log(date.getMinutes()); // 45
console.log(date.getSeconds()); // 30
console.log(date.getMilliseconds()); // 400
Invalid Date не восстанавливается через setMinutes()
Если объект уже невалидный, setMinutes() не сможет сделать его рабочим снова.
const date = new Date("invalid");
console.log(date.setMinutes(10)); // NaN
console.log(String(date)); // "Invalid Date"
Невалидное значение делает дату Invalid Date
Если в setMinutes() передать NaN или значение, которое превращается в NaN, результатом будет невалидная дата.
const date = new Date(2025, 0, 15, 10, 20, 0);
console.log(date.setMinutes(NaN)); // NaN
console.log(String(date)); // "Invalid Date"
Это важно помнить, если минуты приходят из формы, API или пользовательского ввода.
setMinutes() не создаёт новый объект даты
Этот метод не создаёт новую дату рядом со старой.
Он изменяет уже существующий объект Date.
const date = new Date(2025, 0, 15, 10, 20, 30);
const sameDate = date;
date.setMinutes(45);
console.log(sameDate.getMinutes()); // 45
Обе переменные указывают на один и тот же объект.
Когда это полезно
setMinutes() особенно удобен, когда:
- нужно изменить минуты у существующей даты
- вы сдвигаете время вперёд или назад
- хотите сразу обновить минуты, секунды и миллисекунды
- нужно выставить ровное время вроде
10:00или10:30
Пример:
const meeting = new Date(2025, 0, 15, 10, 20, 30);
meeting.setMinutes(0);
console.log(meeting.getMinutes()); // 0
Частые ошибки
Ожидать новый объект Date, а не изменение старого
const date = new Date(2025, 0, 15, 10, 20, 30);
date.setMinutes(45);
console.log(date.getMinutes()); // 45
Метод меняет исходный объект.
Ожидать объект Date в результате
const date = new Date(2025, 0, 15, 10, 20, 30);
const result = date.setMinutes(45);
console.log(typeof result); // "number"
Результат метода - timestamp, а не объект даты.
Забывать, что можно передать дополнительные аргументы
const date = new Date(2025, 0, 15, 10, 20, 30, 400);
date.setMinutes(45, 50, 900);
setMinutes() умеет менять не только минуты, но и остальные части времени.
Думать, что значение больше 59 вызовет ошибку
const date = new Date(2025, 0, 15, 10, 59, 0);
date.setMinutes(60);
Ошибка не появится. JavaScript просто перенесёт время на следующий час.
Забывать про переход на предыдущий день
const date = new Date(2025, 0, 15, 0, 10, 0);
date.setMinutes(-1);
Отрицательное значение может перенести время назад.
Путать setMinutes() и getMinutes()
const date = new Date(2025, 0, 15, 10, 20, 30);
console.log(date.getMinutes()); // 20
date.setMinutes(45);
Один метод читает значение, другой его изменяет.
Забывать про локальное время
setMinutes() работает по локальному часовому поясу пользователя.
Если важен именно UTC, лучше смотреть в сторону setUTCMinutes().
Быстрая памятка
setMinutes()вызывается у объектаDate- метод изменяет исходную дату
- результатом является
timestamp - можно передать только минуты или сразу минуты, секунды и миллисекунды
- обычно минуты идут от
0до59 - значения меньше
0и больше59нормализуются автоматически setMinutes()работает по локальному времени- для
UTCестьsetUTCMinutes() - у невалидного аргумента результатом будет
Invalid Date Invalid DateчерезsetMinutes()не восстанавливается
Коротко
setMinutes() в JavaScript нужен, чтобы изменить минуты в объекте Date. Главное, что стоит запомнить: метод меняет исходную дату, возвращает timestamp, может сразу принять секунды и миллисекунды, работает по локальному времени и умеет автоматически переходить на другой час или день, если значение выходит за пределы обычного диапазона.