SetUTCMilliseconds: примеры (JAVASCRIPT)
setUTCMilliseconds(millisecondsValue: number): numberМетод setUTCMilliseconds() является частью объекта Date в JavaScript. Он устанавливает миллисекунды для указанной даты по всемирному координированному времени (UTC).
Основные сведения о функции
Функция применяется, когда требуется точно установить или изменить компонент миллисекунд даты, представленной в UTC. Это полезно для временных вычислений, не зависящих от локального часового пояса пользователя.
Синтаксис: dateObj.setUTCMilliseconds(millisecondsValue)
Параметры:
millisecondsValue(Число): Целое число от 0 до 999, представляющее миллисекунды. Однако допускаются значения за пределами этого диапазона. Например, -1 установит последнюю миллисекунду предыдущей секунды (т.е. 999 миллисекунд), а 1000 увеличит секундную компоненту на 1 и установит миллисекунды в 0.
Возвращаемое значение:
- Метод возвращает количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 UTC по обновленному времени (timestamp). При этом сам объект
Dateизменяется.
Простые примеры использования
Установка конкретных миллисекунд.
const date = new Date('2023-01-01T00:00:00.000Z');
date.setUTCMilliseconds(123);
console.log(date.toISOString());2023-01-01T00:00:00.123Z
Использование значения больше 999. Это приводит к увеличению секунд.
const date = new Date('2023-01-01T00:00:00.000Z');
date.setUTCMilliseconds(1500);
console.log(date.toISOString());2023-01-01T00:00:01.500Z
Использование отрицательного значения. Это уменьшает секундную компоненту.
const date = new Date('2023-01-01T00:00:00.500Z');
date.setUTCMilliseconds(-200);
console.log(date.toISOString());2022-12-31T23:59:59.800Z
Похожие функции в JavaScript
setMilliseconds()- Устанавливает миллисекунды для даты, но использует локальное время системы. Предпочтительнее использоватьsetUTCMillisecondsдля согласованных операций с серверным временем или между разными часовыми поясами.setUTCSeconds()- Устанавливает секунды и, опционально, миллисекунды по UTC. Если нужно изменить и секунды, удобнее использовать эту функцию, передав миллисекунды вторым аргументом.getUTCMilliseconds()- Парный метод для получения миллисекунд из даты по UTC.
Типичные ошибки
Передача нечислового аргумента приводит к неявному преобразованию, что может дать неожиданный результат или NaN.
const date = new Date();
console.log(date.setUTCMilliseconds('abc')); // Возвращает NaN
console.log(date.toString()); // Дата становится Invalid DateNaN Invalid Date
Ошибки в логике при работе с датами, например, неправильный учет того, что метод изменяет исходный объект.
const startDate = new Date('2023-01-01T00:00:00.000Z');
const endDate = startDate; // Это ссылка на тот же объект!
endDate.setUTCMilliseconds(500);
console.log(startDate.toISOString()); // Исходная дата тоже изменилась2023-01-01T00:00:00.500Z
История изменений
Метод setUTCMilliseconds() был стандартизирован в ECMAScript 1 (1997 год). С тех пор его спецификация не претерпевала существенных изменений. В последних версиях ECMAScript (ES6 и далее) поведение функции остается стабильным и обратно совместимым.
Расширенные примеры применения
Обнуление миллисекундной компоненты для точного сравнения или округления времени до секунды.
function floorToSecondUTC(date) {
const newDate = new Date(date);
newDate.setUTCMilliseconds(0);
return newDate;
}
const now = new Date('2023-06-15T12:34:56.789Z');
console.log(floorToSecondUTC(now).toISOString());2023-06-15T12:34:56.000Z
Высокоточное измерение промежутка времени, где требуется контроль до миллисекунд.
function setPreciseUTCTime(year, month, day, hour, min, sec, ms) {
const date = new Date();
date.setUTCFullYear(year, month, day);
date.setUTCHours(hour, min, sec, ms); // Установка часов, минут, секунд и миллисекунд
// Альтернативный вариант через setUTCMilliseconds:
// date.setUTCHours(hour, min, sec);
// date.setUTCMilliseconds(ms);
return date;
}
console.log(setPreciseUTCTime(2023, 5, 15, 14, 30, 45, 123).toISOString());2023-06-15T14:30:45.123Z
Использование в цикле для создания временных меток с заданным интервалом в миллисекундах.
const baseTime = new Date('2023-01-01T00:00:00.000Z');
const timestamps = [];
for(let i = 0; i < 5; i++) {
const newTime = new Date(baseTime);
newTime.setUTCMilliseconds(i * 200); // Увеличиваем на 200 мс каждый шаг
timestamps.push(newTime.toISOString());
}
console.log(timestamps);[ "2023-01-01T00:00:00.000Z", "2023-01-01T00:00:00.200Z", "2023-01-01T00:00:00.400Z", "2023-01-01T00:00:00.600Z", "2023-01-01T00:00:00.800Z" ]
Аналоги функции в других языках
Python (datetime): Объект datetime является неизменяемым. Для установки миллисекунд создается новый объект с методом replace().
from datetime import datetime
dt = datetime(2023, 1, 1, 0, 0, 0, 0)
new_dt = dt.replace(microsecond=123000) # Задание микросекунд
print(new_dt.isoformat())2023-01-01T00:00:00.123000
PHP: Класс DateTime имеет метод setTime(), который может устанавливать микросекунды.
$date = new DateTime('2023-01-01T00:00:00.000Z');
$date->setTime($date->format('H'), $date->format('i'), $date->format('s'), 123);
echo $date->format('Y-m-d\TH:i:s.v\Z');2023-01-01T00:00:00.123Z
MySQL: Функция DATE_ADD() или арифметические операции могут добавлять интервалы времени, включая миллисекунды.
SELECT '2023-01-01 00:00:00.000' + INTERVAL 123 MILLISECOND;2023-01-01 00:00:00.123
C (стандартная библиотека): Работа с временем структуры struct tm не поддерживает миллисекунды напрямую. Обычно их хранят отдельно или используют системные функции, такие как gettimeofday().