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

Работа с минутами в UTC: метод setUTCMinutes
Раздел: Дата и время, UTC методы
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.

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

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

Пример javascript
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

Итеративное добавление интервалов в минутах.

Пример javascript
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

Валидация ввода минут с корректировкой.

Пример javascript
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

JS setUTCMinutes function comments

En
SetUTCMinutes Sets the minutes for a specified date according to universal time