JavaScript метод Date.setDate()
Определение и применение
JavaScript метод setDate() объекта
Date
устанавливает день месяца для указанной даты по местному времени.
В качестве возвращаемого значения метода setDate() вы получаете количество миллисекунд между
1 января 1970 00:00:00 UTC и заданной датой.
Поддержка браузерами
Спецификация: ecma262
Поддерживается во всех основных браузерах с 2015 года.
| Возможность | Компьютеры | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
setDate | 1 | 12 | 1 | 3 | 1 | 18 | 4 | 10.1 | 1 | 1.0 | 4.4 | 1 |
поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31
JavaScript синтаксис
dateObj.setDate(dayValue);Значения параметров
| Параметр | Описание |
|---|---|
dayValue |
Целое число, представляющее день месяца. Обязательный параметр. Ожидаемые значения лежат в диапазоне от 1 до 31, но другие значения возможны, например:
|
Возвращаемое значение и особенности
Метод изменяет исходный объект и возвращает новую метку времени — число миллисекунд от
1970-01-01T00:00:00.000Z, а не объект Date. Если аргумент преобразуется в
NaN (в том числе явно переданный undefined), дата становится недействительной и возвращается
NaN. Пропуск обязательного аргумента также приводит к NaN.
Аргументы преобразуются к числам; дробная часть отбрасывается. Бесконечные значения и результат за пределами
диапазона Date (±8,64 × 1015 миллисекунд от эпохи) дают Invalid Date.
Значения за пределами обычного диапазона, включая отрицательные, переносятся в соседние компоненты даты.
Если исходный объект содержит Invalid Date, этот метод не восстанавливает его: результат остаётся
NaN.
Изменение происходит по местному времени. При переходе на летнее или зимнее время разность меток может отличаться от
ожидаемого числа часов. Для сдвига на фиксированное число миллисекунд используйте
setTime(). При повторяющемся местном времени выбирается более ранний момент, а несуществующее время сдвигается вперёд на
длительность пропуска.
Спецификация
ECMAScript — Date.prototype.setDate(). Метод входит в стандарт начиная с ECMAScript 1.
Примеры, попробуйте сами
setDate() — пример 1
Измените аргументы и нажмите ▶. Каждый вызов в этом примере начинается с исходной даты; сравните изменённые компоненты с комментариями.
index.html
<p>Результат выполнения выводится в консоль.</p>
main.js
// Каждый вариант начинается с 14 февраля 2019 года, 12:00 по местному времени.
let someDay
someDay = new Date(2019, 1, 14, 12)
someDay.setDate(0)
console.log(someDay.toDateString()) // "Thu Jan 31 2019"
someDay = new Date(2019, 1, 14, 12)
someDay.setDate(10)
console.log(someDay.toDateString()) // "Sun Feb 10 2019"
someDay = new Date(2019, 1, 14, 12)
someDay.setDate(20)
console.log(someDay.toDateString()) // "Wed Feb 20 2019"
someDay = new Date(2019, 1, 14, 12)
someDay.setDate(31)
console.log(someDay.toDateString()) // "Sun Mar 03 2019"
someDay = new Date(2019, 1, 14, 12)
someDay.setDate(-1)
console.log(someDay.toDateString()) // "Wed Jan 30 2019"
someDay = new Date(2019, 1, 14, 12)
someDay.setDate(-10)
console.log(someDay.toDateString()) // "Mon Jan 21 2019"
someDay = new Date(2019, 1, 14, 12)
someDay.setDate(-40)
console.log(someDay.toDateString()) // "Sat Dec 22 2018"
Возвращаемая метка и Invalid Date
Сравните результат метода с getTime(). Явно переданный undefined делает дату недействительной.
index.html
<p>Результат выполнения выводится в консоль.</p>
main.js
const date = new Date(2019, 1, 14, 12)
const timestamp = date.setDate(20)
console.log(typeof timestamp) // "number"
console.log(timestamp === date.getTime()) // true
console.log(date.setDate(undefined)) // NaN
console.log(Number.isNaN(date.getTime())) // true