SetMinutes: примеры (JAVASCRIPT)

Установка минут в дате с помощью setMinutes
Раздел: Дата и время, Методы
setMinutes(minutesValue: number, secondsValue?: number, msValue?: number): number

Функция setMinutes в JavaScript

Метод setMinutes() является частью объекта Date в JavaScript. Он используется для установки минуты, а также, опционально, секунды и миллисекунды для указанной даты по местному времени.

Метод изменяет объект Date напрямую, а также возвращает обновленное количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 UTC (эпоха Unix).

Аргументы

  • minutesValue (обязательный): Целое число от 0 до 59, представляющее минуты. Значения за пределами диапазона приводят к автоматическому изменению других компонентов даты (часов, дня и т.д.).
  • secondsValue (необязательный): Целое число от 0 до 59, представляющее секунды. Если указано, то обновляются и секунды. Если значение выходит за рамки, корректируется минуты.
  • msValue (необязательный): Целое число от 0 до 999, представляющее миллисекунды. Если указано, обновляются и миллисекунды. Нестандартные значения также влияют на более старшие единицы времени.

Возвращаемое значение

Метод возвращает количество миллисекунд (timestamp), соответствующее обновленной дате. При этом исходный объект Date также модифицируется.

Примеры использования setMinutes

Базовое использование с одним аргументом

let date = new Date('2024-01-15T10:30:45');
date.setMinutes(15);
console.log(date.toString());
Mon Jan 15 2024 10:15:45 GMT+0300 (Москва, стандартное время)

Использование с двумя аргументами (минуты и секунды)

let date = new Date('2024-01-15T10:30:45');
date.setMinutes(45, 20);
console.log(date.toString());
Mon Jan 15 2024 10:45:20 GMT+0300 (Москва, стандартное время)

Использование со всеми аргументами (минуты, секунды, миллисекунды)

let date = new Date('2024-01-15T10:30:45.100');
let timestamp = date.setMinutes(59, 59, 999);
console.log(date.toString());
console.log('Timestamp:', timestamp);
Mon Jan 15 2024 10:59:59 GMT+0300 (Москва, стандартное время)
Timestamp: 1705305599999

Автоматическая коррекция даты при значении за пределами 0-59

let date = new Date('2024-01-15T23:45:00');
date.setMinutes(75); // 75 минут = 1 час 15 минут
console.log(date.toString());
Tue Jan 16 2024 00:15:00 GMT+0300 (Москва, стандартное время)

Похожие функции в JavaScript

  • Date.setHours(): Устанавливает часы, а также может устанавливать минуты, секунды и миллисекунды. Полезно для комплексного изменения времени.
  • Date.setTime(): Устанавливает дату и время, передавая количество миллисекунд с начала эпохи Unix. Прямая работа с таймстемпом.

Метод setMinutes применяется для точной настройки минут и связанных секунд с миллисекундами. Метод setHours чаще выбирают для изменения часового компонента с возможностью одновременной настройки минут. Метод setTime служит для полной перезаписи даты через миллисекунды.

Типичные ошибки

1. Забывают, что месяцы в JavaScript Date начинаются с 0, а минуты — с 0.

let date = new Date(2024, 0, 15); // 15 января 2024
date.setMinutes(30); // Корректно
console.log('Месяц (0-11):', date.getMonth()); // 0
Месяц (0-11): 0

2. Ожидание возврата нового объекта Date, а не изменения существующего.

let date1 = new Date('2024-01-15T10:00:00');
let date2 = date1;
date2.setMinutes(45); // Меняет и date1, и date2
console.log(date1.getMinutes()); // 45
45

3. Передача строковых или нецелочисленных значений, которые могут привести к неожиданной коррекции даты.

let date = new Date('2024-01-15T10:30:00');
date.setMinutes("05"); // Строка приводится к числу 5
console.log(date.getMinutes()); // 5
date.setMinutes(59.7); // Дробная часть отбрасывается
console.log(date.getMinutes()); // 59
5
59

Изменения в последних версиях

Спецификация метода Date.prototype.setMinutes() остается стабильной в последних версиях ECMAScript (ES6 и выше). Изменений в его поведении или сигнатуре не было.

Основные улучшения в работе с датами в современных версиях JavaScript связаны с введением нового API Temporal (на стадии предложения), который призван заменить устаревший объект Date и сделать работу со временем более предсказуемой.

Расширенные примеры

Сброс секунд и миллисекунд при установке минут

Пример javascript
let date = new Date('2024-01-15T10:30:45.123');
// Установить 15 минут, сбросив секунды и миллисекунды в 0
// Для этого используем второй и третий аргументы
date.setMinutes(15, 0, 0);
console.log(date.toISOString());
2024-01-15T07:15:00.000Z

Использование возвращаемого значения (timestamp) для вычислений

Пример javascript
let startDate = new Date('2024-01-15T10:00:00');
let endTimestamp = startDate.setMinutes(startDate.getMinutes() + 90); // Добавить 90 минут
let endDate = new Date(endTimestamp);
console.log('Конечное время:', endDate.toString());
Конечное время: Mon Jan 15 2024 11:30:00 GMT+0300 (Москва, стандартное время)

Циклическое изменение времени (добавление интервалов)

Пример javascript
let date = new Date('2024-01-15T09:00:00');
for(let i = 0; i < 4; i++) {
    // Добавляем 15 минут на каждой итерации
    date.setMinutes(date.getMinutes() + 15);
    console.log(date.toLocaleTimeString());
}
09:15:00
09:30:00
09:45:00
10:00:00

Корректировка времени при выходе за границы суток

Пример javascript
let date = new Date('2024-01-15T23:55:00');
// Добавить 10 минут - перейдем на следующий день
date.setMinutes(date.getMinutes() + 10);
console.log('Дата:', date.toDateString());
console.log('Время:', date.toLocaleTimeString());
Дата: Tue Jan 16 2024
Время: 00:05:00

Создание таймера обратного отсчета (упрощенный пример)

Пример javascript
function setTimer(hours, minutes) {
    let now = new Date();
    let targetTime = new Date(now);
    targetTime.setHours(targetTime.getHours() + hours);
    targetTime.setMinutes(targetTime.getMinutes() + minutes);
    // Обнуляем секунды и миллисекунды для точности
    targetTime.setSeconds(0, 0);
    return targetTime;
}
let alarm = setTimer(0, 5); // Таймер на 5 минут
console.log('Будильник установлен на:', alarm.toLocaleTimeString());
Будильник установлен на: [текущее время + 5 минут, например, 14:25:00]

Альтернативы в других языках программирования

PHP

$date = new DateTime('2024-01-15 10:30:45');
$date->setTime($date->format('H'), 15);
echo $date->format('Y-m-d H:i:s');
2024-01-15 10:15:45

В PHP нет прямой аналогии. Используется метод setTime() объекта DateTime, который требует указания часов и минут одновременно. Есть также modify().

Python

from datetime import datetime
date = datetime(2024, 1, 15, 10, 30, 45)
date = date.replace(minute=15)
print(date)
2024-01-15 10:15:45

В Python объекты datetime являются неизменяемыми. Метод replace() создает новый объект с измененными указанными атрибутами.

MySQL

SELECT DATE_ADD('2024-01-15 10:30:45', INTERVAL (15 - MINUTE('2024-01-15 10:30:45')) MINUTE) AS new_date;
2024-01-15 10:15:45

В MySQL для манипуляций с датами применяются функции типа DATE_ADD(), DATE_SUB() или ADDTIME(). Прямого аналога нет.

C (библиотека time.h)

#include 
#include 
int main() {
    struct tm timeinfo = {0};
    timeinfo.tm_year = 2024 - 1900;
    timeinfo.tm_mon = 0;
    timeinfo.tm_mday = 15;
    timeinfo.tm_hour = 10;
    timeinfo.tm_min = 30;
    timeinfo.tm_sec = 45;
    timeinfo.tm_min = 15; // Устанавливаем минуты
    printf("Час: %d, Минута: %d", timeinfo.tm_hour, timeinfo.tm_min);
    return 0;
}
Час: 10, Минута: 15

В языке C работа с датами ведется через структуру tm. Изменение поля tm_min аналогично setMinutes. После изменения часто требуется пересчитать временную метку функцией mktime().

JS setMinutes function comments

En
SetMinutes Sets the minutes for a specified date according to local time