SetMinutes: примеры (JAVASCRIPT)
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()); // 4545
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()); // 595 59
Изменения в последних версиях
Спецификация метода Date.prototype.setMinutes() остается стабильной в последних версиях ECMAScript (ES6 и выше). Изменений в его поведении или сигнатуре не было.
Основные улучшения в работе с датами в современных версиях JavaScript связаны с введением нового API Temporal (на стадии предложения), который призван заменить устаревший объект Date и сделать работу со временем более предсказуемой.
Расширенные примеры
Сброс секунд и миллисекунд при установке минут
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) для вычислений
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 (Москва, стандартное время)
Циклическое изменение времени (добавление интервалов)
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
Корректировка времени при выходе за границы суток
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
Создание таймера обратного отсчета (упрощенный пример)
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().