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

Метод setUTCSeconds для работы с датами в JavaScript
Раздел: Дата и время, UTC методы
setUTCSeconds(secondsValue: number, msValue?: number): number

Описание функции setUTCSeconds

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

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

Аргументы метода:

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

Возвращаемое значение: Количество миллисекунд (timestamp), соответствующее обновленной дате.

Короткие примеры использования

Пример 1: Установка секунд.

const date = new Date('2023-01-01T00:00:00.000Z');
console.log(date.toISOString());
// Устанавливаем 45 секунд
date.setUTCSeconds(45);
console.log(date.toISOString());
2023-01-01T00:00:00.000Z
2023-01-01T00:00:45.000Z

Пример 2: Установка секунд и миллисекунд.

const date = new Date('2023-01-01T00:00:00.000Z');
date.setUTCSeconds(30, 500);
console.log(date.toISOString());
2023-01-01T00:00:30.500Z

Пример 3: Корректный переход через минуту при установке значения больше 59.

const date = new Date('2023-01-01T00:00:00.000Z');
// 70 секунд = 1 минута 10 секунд
date.setUTCSeconds(70);
console.log(date.toISOString());
2023-01-01T00:01:10.000Z

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

  • setSeconds(): Устанавливает секунды для даты по локальному времени. Используется, когда нужно работать со временем пользователя в его часовом поясе.
  • getUTCSeconds(): Возвращает секунды указанной даты по UTC. Используется для получения значения.
  • setUTCMinutes(): Устанавливает минуты по UTC. Предпочтительнее при необходимости изменить минуты, а не секунды.

Выбор между setUTCSeconds() и setSeconds() зависит от контекста: для операций, зависимых от часового пояса (например, отображение времени для пользователя), используется локальный вариант, для независимых (например, отправка на сервер) — UTC.

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

Ошибка 1: Передача значения за пределами диапазона, что приводит к автоматическому изменению других компонентов даты. Это не ошибка выполнения, но может вызвать неожиданные результаты.

const date = new Date('2023-01-01T00:00:00.000Z');
// Установка 70 секунд (корректно, но увеличивает минуты)
date.setUTCSeconds(70);
console.log(date.toISOString());
2023-01-01T00:01:10.000Z

Ошибка 2: Путаница между локальным временем и UTC. Например, использование setSeconds() вместо setUTCSeconds() для дат, которые должны быть в UTC.

const date = new Date('2023-01-01T00:00:00.000Z');
// Локальное время пользователя может отличаться от UTC
date.setSeconds(45);
console.log(date.toISOString()); // Результат зависит от часового пояса
// Например, для часового пояса UTC+3:
// 2022-12-31T21:00:45.000Z

Ошибка 3: Игнорирование возвращаемого значения. Метод изменяет исходный объект Date, но также возвращает timestamp. Если результат не используется, это не ошибка, но может ввести в заблуждение.

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

Метод setUTCSeconds() не претерпел значительных изменений в последних версиях ECMAScript. Его поведение остается стабильным с момента стандартизации в ECMAScript 1 (1997 год). В современных стандартах (ECMAScript 2020 и новее) акцент делается на использование временных меток (timestamp) или библиотек, таких как Temporal (на стадии предложения), но существующие методы Date, включая setUTCSeconds, сохраняются для обратной совместимости.

Расширенные примеры использования

Пример 1: Сброс миллисекунд в дате до нуля.

Пример javascript
const date = new Date('2023-01-01T12:30:45.123Z');
// Получаем текущие секунды и устанавливаем миллисекунды в 0
const currentSeconds = date.getUTCSeconds();
date.setUTCSeconds(currentSeconds, 0);
console.log(date.toISOString());
2023-01-01T12:30:45.000Z

Пример 2: Добавление заданного количества секунд к дате.

Пример javascript
function addSeconds(date, seconds) {
    const newDate = new Date(date);
    newDate.setUTCSeconds(newDate.getUTCSeconds() + seconds);
    return newDate;
}
const original = new Date('2023-01-01T00:00:00.000Z');
const newDate = addSeconds(original, 120); // Добавляем 120 секунд
console.log(newDate.toISOString());
2023-01-01T00:02:00.000Z

Пример 3: Создание таймера с точностью до секунд, независимого от часового пояса.

Пример javascript
// Установка времени на 10 минут 30 секунд после полуночи UTC
const timerDate = new Date('2023-01-01T00:00:00.000Z');
timerDate.setUTCMinutes(10);
timerDate.setUTCSeconds(30);
console.log(timerDate.toISOString());
2023-01-01T00:10:30.000Z

Пример 4: Обработка некорректного ввода (значение больше 59).

Пример javascript
const date = new Date('2023-01-01T00:00:00.000Z');
// Автоматический перенос избыточных секунд в минуты
date.setUTCSeconds(125); // 125 секунд = 2 минуты 5 секунд
console.log(date.toISOString());
2023-01-01T00:02:05.000Z

Пример 5: Использование отрицательных значений для вычитания секунд.

Пример javascript
const date = new Date('2023-01-01T00:02:00.000Z');
// Вычитаем 90 секунд
date.setUTCSeconds(date.getUTCSeconds() - 90);
console.log(date.toISOString());
2023-01-01T00:00:30.000Z

Аналоги функции в других языках

PHP: DateTime::setTime()

$date = new DateTime('2023-01-01 00:00:00', new DateTimeZone('UTC'));
$date->setTime(0, 0, 45); // часы, минуты, секунды
echo $date->format('Y-m-d H:i:s');
2023-01-01 00:00:45

Python: datetime.replace()

from datetime import datetime, timezone
dt = datetime(2023, 1, 1, 0, 0, 0, tzinfo=timezone.utc)
dt = dt.replace(second=45)
print(dt.isoformat())
2023-01-01T00:00:45+00:00

MySQL: DATE_ADD() / SEC_TO_TIME()

SELECT DATE_ADD('2023-01-01 00:00:00', INTERVAL 45 SECOND);
2023-01-01 00:00:45

C (стандартная библиотека time.h): Работа со структурой tm и функцией mktime(), но без встроенной поддержки UTC как отдельного метода. Требуется ручная настройка.

JS setUTCSeconds function comments

En
SetUTCSeconds Sets the seconds for a specified date according to universal time