JavaScript метод Date.setSeconds()

Определение и применение

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

Поддержка браузерами

Спецификация: ecma262

Поддерживается во всех основных браузерах с 2015 года.

Показать браузеры
Совместимостьjavascript.builtins.Date.setSeconds
ВозможностьКомпьютерыМобильные
ChromeEdgeFirefoxOperaSafariChrome AndroidFirefox for AndroidOpera AndroidSafari on iOSSamsung BrowserWebView AndroidWebView on iOS
setSeconds✓1✓12✓1✓3✓1✓18✓4✓10.1✓1✓1.0✓4.4✓1

поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31

JavaScript синтаксис

JavaScript
dateObj.setSeconds(secondsValue);
dateObj.setSeconds(secondsValue, msValue);

Значения параметров

setSeconds(): параметры
Параметр Описание
secondsValue Целое число от 0 до 59, представляющее секунды. Если значение больше 59, то значение времени будет увеличиваться на дополнительные секунды. Обязательный параметр.
msValue Целое число от 0 до 999, представляющее миллисекунды. Если значение больше 999, то значение времени будет увеличиваться на дополнительные миллисекунды. Если вы указываете значение этого параметра, то необходимо также указать значение для секунд. Необязательный параметр.

Если указанный параметр находится за пределами ожидаемого диапазона, то метод setSeconds() пытается соответствующим образом обновить другие параметры и информацию о дате в объекте Date. Например, если вы используете значение 70 для секунд, то минуты будут увеличены на 1, а значение 10 будет использоваться для секунд.

Если msValue не указан, сохраняется текущее значение миллисекунд.

Возвращаемое значение и особенности

Метод изменяет исходный объект и возвращает новую метку времени — число миллисекунд от 1970-01-01T00:00:00.000Z, а не объект Date. Если аргумент преобразуется в NaN (в том числе явно переданный undefined), дата становится недействительной и возвращается NaN. Пропуск обязательного аргумента также приводит к NaN.

Аргументы преобразуются к числам; дробная часть отбрасывается. Бесконечные значения и результат за пределами диапазона Date (±8,64 × 1015 миллисекунд от эпохи) дают Invalid Date.

Значения за пределами обычного диапазона, включая отрицательные, переносятся в соседние компоненты даты. Неуказанные необязательные компоненты сохраняются; это отличается от явной передачи undefined.

Если исходный объект содержит Invalid Date, этот метод не восстанавливает его: результат остаётся NaN.

Изменение происходит по местному времени. При переходе на летнее или зимнее время разность меток может отличаться от ожидаемого числа часов. Для сдвига на фиксированное число миллисекунд используйте setTime(). При повторяющемся местном времени выбирается более ранний момент, а несуществующее время сдвигается вперёд на длительность пропуска.

Спецификация

ECMAScript — Date.prototype.setSeconds(). Метод входит в стандарт начиная с ECMAScript 1.

Примеры, попробуйте сами

setSeconds() — пример 1

Измените аргументы и нажмите ▶. Каждый вызов в этом примере начинается с исходной даты; сравните изменённые компоненты с комментариями.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
// Каждый вариант начинается с 14 февраля 2019 года, 12:00 по местному времени.
let someDay

// Компоненты времени: часы, минуты, секунды и миллисекунды.
function timeParts(date) {
    return [date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()]
}

someDay = new Date(2019, 1, 14, 12)
someDay.setSeconds(23)
console.log(timeParts(someDay)) // [12,0,23,0]

someDay = new Date(2019, 1, 14, 12)
someDay.setSeconds(50, 500)
console.log(timeParts(someDay)) // [12,0,50,500]

someDay = new Date(2019, 1, 14, 12)
someDay.setSeconds(66, 1100)
console.log(timeParts(someDay)) // [12,1,7,100]

Возвращаемая метка и Invalid Date

Сравните результат метода с getTime(). Явно переданный undefined делает дату недействительной.

index.html
HTML
<p>Результат выполнения выводится в консоль.</p>
main.js
JavaScript
const date = new Date(2019, 1, 14, 12)
const timestamp = date.setSeconds(45)
console.log(typeof timestamp) // "number"
console.log(timestamp === date.getTime()) // true

console.log(date.setSeconds(undefined)) // NaN
console.log(Number.isNaN(date.getTime())) // true