SetUTCMinutes: примеры (JAVASCRIPT)
setUTCMinutes(minutesValue: number, secondsValue?: number, msValue?: number): numberОсновы метода setUTCMinutes
Метод setUTCMinutes() принадлежит объекту Date в JavaScript. Он устанавливает минуты для указанной даты по всемирному координированному времени (UTC).
Этот метод применяется, когда требуется изменить временную метку, оперируя именно минутами в UTC, что важно для согласованной работы с серверным временем, логирования событий в едином формате или выполнения вычислений, не зависящих от локального часового пояса пользователя.
Аргументы метода
- minutesValue (обязательный): целое число от 0 до 59, представляющее минуты.
- secondsValue (необязательный): целое число от 0 до 59. Если параметр указан, метод также устанавливает секунды.
- msValue (необязательный): целое число от 0 до 999. Если указан и secondsValue, метод дополнительно устанавливает миллисекунды.
Возвращаемое значение
Метод возвращает количество миллисекунд, прошедших с полуночи 1 января 1970 года по UTC (эпоха Unix), для обновленной даты. Важно, что он изменяет исходный объект Date.
Простые примеры использования
Установка минут с обязательным параметром.
const date = new Date('2023-05-20T14:30:00Z');
console.log('До:', date.toISOString());
date.setUTCMinutes(45);
console.log('После:', date.toISOString());До: 2023-05-20T14:30:00.000Z После: 2023-05-20T14:45:00.000Z
Установка минут и секунд.
const date = new Date('2023-05-20T14:30:15Z');
date.setUTCMinutes(10, 5);
console.log(date.toISOString());2023-05-20T14:10:05.000Z
Установка минут, секунд и миллисекунд.
const date = new Date();
date.setUTCMinutes(59, 30, 500);
console.log(date.getUTCMinutes(), date.getUTCSeconds(), date.getUTCMilliseconds());59 30 500
Похожие методы в JavaScript
- setMinutes(): Устанавливает минуты по местному времени. Используется, когда операции должны быть привязаны к часовому поясу пользователя.
- getUTCMinutes(): Получает минуты из даты по UTC, но не изменяет объект.
- Date.UTC(): Статический метод, возвращающий временную метку UTC для указанных компонентов (год, месяц, и т.д.). Удобен для создания даты сразу в UTC.
Метод setUTCMinutes() предпочтителен при работе с серверными данными или необходимостью избежать неоднозначностей, связанных с летним временем и локальными переводами часов.
Типичные ошибки
Передача значения за пределами диапазона. JavaScript автоматически скорректирует дату.
const date = new Date('2023-05-20T23:45:00Z');
date.setUTCMinutes(70); // 70 минут = 1 час 10 минут
console.log(date.toISOString()); // Добавится час2023-05-21T00:10:00.000Z
Игнорирование того, что метод изменяет исходный объект.
const date1 = new Date();
const date2 = date1;
date2.setUTCMinutes(0);
console.log(date1.getUTCMinutes() === date2.getUTCMinutes());true // Оба объекта ссылаются на одну дату
Путаница с местным временем. Метод работает только с UTC.
const date = new Date('2023-01-15T00:00:00'); // Локальное время
date.setUTCMinutes(30);
console.log('UTC:', date.toISOString());
console.log('Локальное:', date.toString()); // Результат может отличатьсяИстория изменений
Спецификация метода setUTCMinutes() была стандартизирована в ECMAScript 1 (1997). За время существования существенных изменений в его работе не происходило. Все браузеры поддерживают этот метод с самых ранних версий.
Современные стандарты ECMAScript (ES5, ES6+) лишь закрепляют его поведение, не внося модификаций. Он остается стабильной частью API объекта Date.
Расширенные примеры применения
Сброс секунд и миллисекунд при установке времени.
function setTimeToUTCHourAndMinute(date, hour, minute) {
const newDate = new Date(date);
// Установка часа, минут и явный сброс секунд/миллисекунд
newDate.setUTCHours(hour, minute, 0, 0);
return newDate;
}
const original = new Date();
const rounded = setTimeToUTCHourAndMinute(original, 12, 0);
console.log('Оригинал:', original.toISOString());
console.log('Округлено:', rounded.toISOString());Оригинал: 2023-05-20T14:33:22.123Z Округлено: 2023-05-20T12:00:00.000Z
Итеративное добавление интервалов в минутах.
function addUTCMinutes(date, minutesToAdd) {
const result = new Date(date);
const currentMinutes = result.getUTCMinutes();
result.setUTCMinutes(currentMinutes + minutesToAdd);
return result;
}
const start = new Date('2023-05-20T10:00:00Z');
for (let i = 0; i < 3; i++) {
console.log(addUTCMinutes(start, i * 15).toISOString());
}2023-05-20T10:00:00.000Z 2023-05-20T10:15:00.000Z 2023-05-20T10:30:00.000Z
Валидация ввода минут с корректировкой.
function safeSetUTCMinutes(date, minutes) {
const d = new Date(date);
if (minutes < 0 || minutes > 59) {
console.warn(`Минуты (${minutes}) выходят за пределы. Будет выполнена коррекция даты.`);
}
d.setUTCMinutes(minutes);
return d;
}
console.log(safeSetUTCMinutes(new Date('2023-05-20T00:00:00Z'), 65).toISOString());Предупреждение: Минуты (65) выходят за пределы. Будет выполнена коррекция даты. 2023-05-20T01:05:00.000Z
Аналоги в других языках программирования
Python (datetime с pytz или zoneinfo):
from datetime import datetime, timezone
dt = datetime(2023, 5, 20, 14, 30, tzinfo=timezone.utc)
dt = dt.replace(minute=45) # Замена минуты
print(dt.isoformat())2023-05-20T14:45:00+00:00
PHP:
$date = new DateTime('2023-05-20 14:30:00', new DateTimeZone('UTC'));
$date->setTime($date->format('H'), 45); // Установка минут
echo $date->format('Y-m-d\TH:i:s\Z');2023-05-20T14:45:00Z
MySQL (функция DATE_ADD / DATE_SUB или замена части):
SELECT DATE_ADD('2023-05-20 14:30:00', INTERVAL 15 MINUTE) AS new_date;
-- или
SELECT DATE_FORMAT('2023-05-20 14:30:00', '%Y-%m-%d %H:45:%s') AS new_date;new_date: 2023-05-20 14:45:00