Дата и время в JavaScript. JavaScript определяет класс Date для… | by Roman | NOP::Nuances of Programming | Apr, 2023
JavaScript определяет класс Date
для представления и оперирования числами с целью отображения даты и времени.
Объект Date
создается с помощью конструктора Date()
. Этот объект можно использовать, чтобы отображать год, месяц и день на веб-странице в виде таймера.
Результат работы конструктора Date()
зависит от переданных ему аргументов.
Например:
- Конструктор без аргумента
(Date())
выдает текущее время. - Конструктор с одним аргументом
(Date(milliseconds))
интерпретирует этот аргумент как количество миллисекунд, прошедших с 1970 года. - Конструктор с двумя и более аргументами
(Date(year, month, day, hours, minutes, seconds, milliseconds))
интерпретирует эти аргументы как год, месяц, день месяца, час, минуту, секунду и миллисекунду по местному часовому поясу.
В API Date первый месяц года обозначается как 0, а первый день месяца — как 1.
Конструктор Date()
интерпретирует аргументы, используя часовой пояс локального компьютера.
На компьютере автора установлено индийское стандартное время, поэтому даты и время в этой статье интерпретируются по индийскому стандартному времени.
Чтобы указать дату и время в определенном часовом поясе, нужно добавить этот часовой пояс.
Пример: добавление часового пояса UTC (универсальное скоординированное по Гринвичу время).
Date.UTC()
принимает те же аргументы, что и конструктор Date()
, интерпретирует их в UTC и возвращает миллисекундную метку времени, которую можно передать конструктору Date()
. По умолчанию результаты будут отображаться в часовом поясе локального компьютера. Чтобы отобразить дату в UTC, необходимо применить toString()
, toUTCString()
или toISOString()
.
Методы get
и set
используются для запроса и изменения в объекте Date
полей year
, month
, day-of-month
, hours
, minutes
, seconds
и milliseconds
.
Эти методы применяются двумя способами: по местному времени и по UTC.
- Метод
get
помогает получить полный год (FullYear
) в Date-объекте:
getFullYear()
;getUTCFullYear()
.
2. Метод set
помогает установить полный год (FullYear
) в Date-объекте:
setFullYear()
;setUTCFullYear()
.
Методы set для Date-объектаМетоды get для Date-объектаДля получения и установки других Date-полей необходимо заменить вышеупомянутые методы
get
иset
‘FullYear’ на имя конкретного поля (например,getMonth
,getUTCMonth
,setMonth
,setUTCMonth
).
Примечание. Методы для запроса:
- дня месяца — — →
getDate()
иgetUTCDate()
; - дня недели (от 0 для воскресенья до 6 для субботы) — — →
getDay()
иgetUTCDay()
. Дни недели доступны в режиме “только для чтения”, так что не существует методаsetDay()
.
JavaScript по умолчанию представляет даты как целые числа, которые указывают количество миллисекунд, прошедших с (или до) полуночи 1 января 1970 года по UTC. Это называется временными метками. Статический метод Date.now()
возвращает текущее время в виде временной метки.
В классе Date
применяются следующие методы форматирования строк.
toString()
— использует местный часовой пояс, но не форматирует дату и время с учетом локали.toUTCString()
— использует часовой пояс UTC, но не форматирует дату с учетом локали.toISOString()
— выводит дату и время в стандартном формате “year-month-day hours:minutes:seconds.ms” (по стандарту ISO-8601). Буква “T” отделяет часть вывода даты от части вывода времени. Время выражается в UTC, что обозначается буквой “Z” в качестве последней буквы вывода.toLocaleString()
— использует местный часовой пояс и формат, соответствующий локали пользователя.toDateString()
— форматирует только часть даты и опускает время. Этот метод использует локальный часовой пояс и не выполняет форматирование, соответствующее локали.toLocaleDateString()
— форматирует только дату. Этот метод использует местный часовой пояс и формат даты, соответствующий локали.toTimeString()
— форматирует только время и опускает дату. Этот метод использует местный часовой пояс, но не форматирует время в соответствии с локалью.toLocaleTimeString()
— форматирует время с учетом локали и использует местный часовой пояс.
В объекте Date
существует статический метод parse()
, который принимает в качестве аргумента строковое представление даты и возвращает временную метку, представляющую дату с 1 января 1970 года 00:00:00 UTC или NaN, если строка не распознана или не имеет подходящих значений даты.
Читайте также:
- 7 полезных репозиториев GitHub для JS-программистов
- Как найти три наибольших числа в JavaScript
- Алгоритм JavaScript: Array.forEach()
Читайте нас в Telegram, VK и Дзен
Дата и время в JavaScript
JavaScript определяет класс Date
для представления и оперирования числами с целью отображения даты и времени.
Объект Date
создается с помощью конструктора Date()
. Этот объект можно использовать, чтобы отображать год, месяц и день на веб-странице в виде таймера.
Результат работы конструктора Date()
зависит от переданных ему аргументов.
Например:
- Конструктор без аргумента
(Date())
выдает текущее время. - Конструктор с одним аргументом
(Date(milliseconds))
интерпретирует этот аргумент как количество миллисекунд, прошедших с 1970 года. - Конструктор с двумя и более аргументами
(Date(year, month, day, hours, minutes, seconds, milliseconds))
интерпретирует эти аргументы как год, месяц, день месяца, час, минуту, секунду и миллисекунду по местному часовому поясу.
В API Date первый месяц года обозначается как 0, а первый день месяца — как 1.
Конструктор Date()
интерпретирует аргументы, используя часовой пояс локального компьютера.
На компьютере автора установлено индийское стандартное время, поэтому даты и время в этой статье интерпретируются по индийскому стандартному времени.
Чтобы указать дату и время в определенном часовом поясе, нужно добавить этот часовой пояс.
Пример: добавление часового пояса UTC (универсальное скоординированное по Гринвичу время).
Date.UTC()
принимает те же аргументы, что и конструктор Date()
, интерпретирует их в UTC и возвращает миллисекундную метку времени, которую можно передать конструктору Date()
. По умолчанию результаты будут отображаться в часовом поясе локального компьютера. Чтобы отобразить дату в UTC, необходимо применить toString()
, toUTCString()
или toISOString()
.
Date-методы в JavaScript
Методы get
и set
используются для запроса и изменения в объекте
полей year
, month
, day-of-month
, hours
, minutes
, seconds
и milliseconds
.
Эти методы применяются двумя способами: по местному времени и по UTC.
- Метод
get
помогает получить полный год (FullYear
) в Date-объекте:
getFullYear()
;getUTCFullYear()
.
2. Метод set
помогает установить полный год (FullYear
) в Date-объекте:
setFullYear()
;setUTCFullYear()
Методы set для Date-объектаМетоды get для Date-объектаДля получения и установки других Date-полей необходимо заменить вышеупомянутые методы
get
иset
‘FullYear’ на имя конкретного поля (например,getMonth
,getUTCMonth
,setMonth
,setUTCMonth
).
Примечание. Методы для запроса:
- дня месяца — — →
getDate()
иgetUTCDate()
; - дня недели (от 0 для воскресенья до 6 для субботы) — — →
getDay()
getUTCDay()
. Дни недели доступны в режиме “только для чтения”, так что не существует методаsetDay()
.
Временные метки
JavaScript по умолчанию представляет даты как целые числа, которые указывают количество миллисекунд, прошедших с (или до) полуночи 1 января 1970 года по UTC. Это называется временными метками. Статический метод Date.now()
возвращает текущее время в виде временной метки.
Форматирование и разбор Date-строк
В классе Date
применяются следующие методы форматирования строк.
toString()
— использует местный часовой пояс, но не форматирует дату и время с учетом локали.toUTCString()
— использует часовой пояс UTC, но не форматирует дату с учетом локали.toISOString()
— выводит дату и время в стандартном формате “year-month-day hours:minutes:seconds.ms” (по стандарту ISO-8601). Буква “T” отделяет часть вывода даты от части вывода времени.toLocaleString()
— использует местный часовой пояс и формат, соответствующий локали пользователя.toDateString()
— форматирует только часть даты и опускает время. Этот метод использует локальный часовой пояс и не выполняет форматирование, соответствующее локали.toLocaleDateString()
— форматирует только дату. Этот метод использует местный часовой пояс и формат даты, соответствующий локали.toTimeString()
— форматирует только время и опускает дату. Этот метод использует местный часовой пояс, но не форматирует время в соответствии с локалью.toLocaleTimeString()
— форматирует время с учетом локали и использует местный часовой пояс.
В объекте Date
существует статический метод parse()
, который принимает в качестве аргумента строковое представление даты и возвращает временную метку, представляющую дату с 1 января 1970 года 00:00:00 UTC или NaN, если строка не распознана или не имеет подходящих значений даты.
Читайте также:
- 7 полезных репозиториев GitHub для JS-программистов
- Как найти три наибольших числа в JavaScript
- Алгоритм JavaScript: Array.forEach()
Читайте нас в Telegram, VK и Дзен
Перевод статьи Tharmi Vijayakumaran: JavaScript Dates and Times
Читайте также
Temporal API — новый подход к управлению датой и временем в JS. Вот почему существуют другие библиотеки, такие как moment.js и date-fns. Разработчики используют их, чтобы понять объект Date. Реализация объекта Date была напрямую скопирована с Java. Java выбросил его, но он остался в JavaScript для обратной совместимости. Написано давно и не обновлялось. Есть некоторые основные проблемы с текущей реализацией Date.
- Поддерживает только UTC и локальный часовой пояс пользователя
- Объект Date является изменчивым: дата будет меняться по мере применения методов
- Ненадежный анализ дат из строк
- Нет поддержки негригорианских календарей
- Неуклюжие API вычислений
Шаги, которые мы рассмотрим:
- Что такое Temporal API?
- Настройка проекта
- Типы данных Temporal API
- Temporal. Now
- Temporal.PlainDate
- Temporal.Duration
- Temporal.TimeZone
- Браузерная поддержка Temporal API
Что такое Temporal API?
Temporal API, лучшая замена объекта Date. Temporal представляет стандартные типы данных и методы для работы с датами и временем. Это позволяет вам иметь простой в использовании API для вычислений даты и времени. Он обеспечивает поддержку всех часовых поясов без необходимости использования другой библиотеки, такой как date-fns. Это способ улучшить API даты/времени в JavaScript. Он предоставляет объекты PlainDate, PlainTime и PlainDateTime, которые не связаны с часовым поясом. Также есть способ получить время, связанное с часовым поясом. Он предоставляет инструменты для работы с часовыми поясами или без них. Таким образом, Temporal предоставляет типы данных, которые делятся на обычные и зонированные.
Temporal решает эти проблемы следующим образом:
- Первоклассная поддержка для всех часовых поясов
- Обработка объектов, доступных с фиксированными датами и временем
- Обеспечение надежности за счет анализа строгого строкового формата
- Поддержка негригорианских календарей
- Дата и вычисления времени, предоставляя простые API
В Temporal доступно несколько типов данных и методов, и мы рассмотрим большинство из них в этом руководстве.
Настройка проекта
Мы создадим очень простой проект.
Создайте пустой каталог для нового проекта Temporal API .
mkdirtemporal-api
cdtemporal-api
Чтобы начать работу с Temporal API , сначала необходимо установить следующий пакет: вы добавляете Snowpack
в качестве зависимости от разработчиков.
npm install --save-dev снежный покров
Создайте файлtemporal.js и включите его в качестве источника в файл index.html для тестирования Temporal API.
index.html
Temporal API
Импортируйте следующий пакет в файл Temporal. js
, и вы готовы начать работу с Temporal API
.
temporal.js
import { Temporal } from '@js-temporal/polyfill';
Теперь мы можем проверить консоль браузера при тестировании следующих случаев.
Встречайте безголовое решение на основе React для создания стильного CRUD
приложения. Благодаря уточнению вы можете быть уверены, что ваша кодовая база всегда будет оставаться чистой и свободной от шаблонов.
Попробуйте уточнить, чтобы быстро создать свой следующий проект CRUD , будь то панель администратора, информационная панель, внутренний инструмент или витрина магазина.
Типы данных Temporal API
Temporal.Now
Это даст вам набор различных методов, которые позволят вам получить объект в текущее время. Допустим, вы хотите получить простую дату и время:
const now = Temporal.Now.plainDateTimeISO()
console.log(now.toString())
// 2022-08-15T17:26:43.63340363
Это точное время вплоть до микро и без секунд. Это очень специфично, чего нельзя сделать с обычным объектом Date. Если вы хотите получить дату и время отдельно, вы можете сделать это:
const nowDate = Temporal.Now.plainDateISO()
const nowTime = Temporal.Now.plainTimeISO()console.log(nowDate.toString())
// 2022-08-15
console.log(nowTime.toString())
// 17:27:51.688660566
Добавление даты, месяца или года с использованием старых методов Date — огромная проблема. В Temporal
это сделать очень просто.
const now = Temporal.Now.plainDateISO()console.log(now.add({ дни: 1, месяцы: 1, годы: 1 }).toString())
// 2023-09-16
Вы также можете выполнять вычитание следующим образом:
const now = Temporal.Now.plainDateISO()
console.log(now.subtract({ дни: 1, месяцы: 1, годы: 1 }).toString())
// 2021-07-14
Эти методы возвращают новую дату вместо изменения даты, над которой вы работаете. Это было плохо реализовано в обычном объекте Date. Поскольку он возвращает измененный объект, а не новый объект, если вы хотите сравнить две даты, вы можете сделать это:
const now = Temporal.Now.plainDateISO()const now2 = Temporal.Now.plainDateISO() console .log(now.equals(now2))
// true
Если вы хотите рассчитать продолжительность между двумя датами, вы можете сделать это следующим образом:
const now = Temporal.Now.plainDateISO()
const now2 = new Temporal.PlainDate(2022,1,1)console.log(now.since(now2).toString())
// P226D
консоль. log(now.until(now2).toString())
// -P226D
Оба вспомогательных метода с
и до
помогают найти продолжительность между двумя датами. Вспомогательный метод с
позволяет установить конкретное значение. Например:
const now = Temporal.Now.plainDateISO()console.log(now.with({ year: 2021 }).toString())
// 2021-08-15
Если вы хотите узнать больше о вспомогательных методах, вы можете проверить Temporal Docs.
Таким образом, на основе этих различных типов planeDate, plainTime и plainDateTime можно получить очень конкретную информацию. Кроме того, если вы заботитесь о часовых поясах, вы можете сделать следующее для определенного часового пояса по вашему выбору.
const now = Temporal.Now.zonedDateTimeISO()console.log(now.toString())
// 2022-08-15T17:37:00.986020984+05:00[Азия/Карачи]
Помещает часовой пояс в конец, чтобы показать время с вашим текущим часовым поясом. Это то, что вы не можете легко сделать с обычным объектом Date. Преобразования между часовыми поясами и не часовыми поясами было очень трудно добиться. Итак, это Temporal. Теперь
у объекта есть функции для получения текущей даты и времени, что бы вы ни искали.
Temporal.PlainDate
Если вы хотите получить точную дату без времени, Вы можете сделать это:
const now = new Temporal.PlainDate(2022,8,8)console.log(now.toString())
// 2022-08-08
Другой способ получить дату — вызвать метод вызывается из
:
const now = Temporal. PlainDate.from("2022-08-08")console.log(now.toString())
// 2022-08-08
Вы также можете пройти объект в методе из
. Вы получите точно такой же результат.
const сейчас = Temporal.PlainDate.from({
год: 2022,
месяц: 8,
день: 8
})console.log(now.toString())
// 2022-08-08
Все это позволяет вам определить дату, время , или что-то еще. Это возможно и для всех часовых поясов. Вы можете сделать зонированное время и дату следующим образом:
const now = Temporal.ZonedDateTime.from({
год: 2022,
месяц: 8,
день: 8,
timeZone: Temporal.Now.timeZone()
} )console.log(now.toString())
// 2022-08-08T00:00:00+05:00[Азия/Карачи]
Вы получите год, месяц и день в вашем конкретном часовом поясе, потому что вы упомянули об этом. Это часть основных типов данных, которые вы собираетесь использовать. Если вы хотите отсортировать даты, вы можете сделать так:
const Today = Temporal. Now.plainDateISO()
const Вчера = Today.subtract({ days: 1})
const Завтра = Today.add ({ days: 1})
const days = [сегодня, вчера, завтра]
const sortedDays = days.sort(Temporal.PlainDate.compare)console.log(sortedDays.map(d => d.toString()))
// ['2022-08-14', '2022-08-15', '2022-08-16']
Temporal.Duration
Этот тип данных передает длину или продолжительность времени. Это помогает при сравнении дат. Вы можете построить новый Duration
с помощью конструктора или из метода
.
const duration = Temporal.Duration.from({ days: 2, month: 8 })console.log(duration.toString())
// P8M2D
Вы можете использовать раунд
, с
, вычесть
или добавить
вспомогательных метода на Длительность
. total
Вспомогательный метод вычисляет всю продолжительность в определенной единице.
const duration = Temporal. Duration.from({ часы: 12, минуты: 30 })console.log(duration.total("минуты"))
// 750
Temporal.TimeZone
Эти данные тип используется для отображения определенного часового пояса. Вы можете использовать это двумя способами:
const timeZone = Temporal.TimeZone.from('America/Chicago')console.log(timeZone.toString())
// Америка/Чикагоconst localTimeZone = Temporal.Now.timeZone()
console.log(localTimeZone.toString())
// Азия/Карачи
Существуют различные типы данных и вспомогательные методы, доступные с Temporal
. Если вы хотите изучить их, вы можете сделать это через Temporal Docs.
Браузерная поддержка Temporal API0081 Временный API
. Этот API еще недоступен, так как предложение по этому API находится на этапе 3. В настоящее время ни один браузер не поддерживает этот API, но вы можете использовать полифилл, если хотите попробовать этот API. Для этого API доступно несколько полифиллов, но @js-temporal/polyfill весьма полезен. Вы можете сразу же использовать этот API, как только установите эту библиотеку.Заключение
Dates в JavaScript включают несколько проблем с реализацией. Temporal API решает эту проблему с помощью простых в использовании API. Разработчики JavaScript сочтут это полезным, как только браузеры начнут поддерживать этот API.
Теги:
javascript
Тест JS: 14 вопросов о дате и времени в JavaScript
- Подтвердите свои навыки JavaScriptz! 🚀
- Вход или регистрация не требуются. ✨
- Множественный выбор. 🤖 … Как это может быть сложно, а?
Outline
Класс Date
в JavaScript имеет общеизвестно сложный API. Он был унаследован от Java…
Эта ситуация заставляет многих разработчиков без вопросов использовать сторонние библиотеки. Хотя эти библиотеки часто являются безопасным и надежным выбором, они редко нужны для форматирования дат или локализации!
Этот тест предназначен для проверки (и углубления) ваших знаний о родном API Date
. Используйте зеленые кнопки для подсказок и объяснений! Надеюсь, к концу задания вы укрепите свое понимание Date
в JavaScript.
Если вы застряли
- Прочитайте подсказки (Зеленая кнопка, нижний правый угол). Некоторые содержат несколько анимированных ответов с подробными аннотациями, в то время как другие предлагают лишь несколько подсказок. Я не могу так просто дать все ответы!
Серьезно, это намеренно, ответы есть. Пропустите или попробуйте фрагменты кода, затем измените его и поиграйте еще. - Попробуйте код в консоли браузера (попробуйте сочетание клавиш
F12
в Windows илиCommand + Option + J
на Mac). - Пожалуйста, напишите мне в Твиттере @justsml. Буду рад услышать ваше мнение!
Загрузка…
Еще несколько секунд…
const d1 = новая Дата(2020, 1, 1) console. log(d1)
Что будет включать вывод?
- 01 января 2020
- 01 февраля 2020 г.
- RangeError: недопустимый аргумент.
Аргумент Месяц отсчитывается от нуля. В диапазоне от 0 до 11 (по западному календарю)
«Февраль» имеет значение индекса, равное единице. (Думайте об этом как о поиске в массиве.)
const d2 = новая дата (2020, 0, 1) console.log(d2)
Что будет включать вывод?
- 01 января 2020
- 01 февраля 2020 г.
- RangeError: недопустимый аргумент.
Аргумент Месяц отсчитывается от нуля. В диапазоне от 0 до 11 (по западному календарю)
«Январь» имеет значение индекса, равное нулю. (Думайте об этом как о поиске в массиве.)
const d3 = Дата («Чт, 01 января 1970 г., 00:00:00 по Гринвичу») console.log(d3)
Что будет включать вывод?
- 01 января 1970 г.
- Unix Эпоха 0
- Текущая дата в формате UTC/GMT
- Текущая дата
- НаН
Это распространенная ошибка которую легко не заметить даже при просмотре кода.
Экземпляр Date
, созданный с помощью Date([args])
, всегда будет возвращать сегодняшнюю дату. Другими словами, аргументы игнорируются. Date('blah')
является псевдонимом для new Date()
.
Недостающая часть — новое ключевое слово
: новая дата (строка даты)
.
Предположим, что все примеры выполняются со смещением часового пояса GMT-7.
const d1 = новая дата('2020-01-01') const d2 = новая дата('2020-01-01T00:00') console.log(d1.getFullYear(), d2.getFullYear())
Какое значение будет выведено на консоль?
- 2019 2020
- 2020 2021
- 2020 2020
- 2020 2019
Конструктор Date
анализирует строки даты, используя либо UTC/GMT, либо местное время.
Хитрость заключается в том, чтобы знать, будет ли использоваться ваш местный часовой пояс… T00:00
заставляет использовать время UTC/GMT.
Учитывая следующую дату…
const date = new Date('2020-01-01T00:00')
Выберите
неверный метод форматирования :- date.toLocaleFormat(‘en-US’, { часовой пояс: ‘UTC’, timeZoneName: ‘short’})
- date.toLocaleDateString(‘en-US’, { timeZone: ‘UTC’, timeZoneName: ‘short’})
- date.toLocaleTimeString(‘en-GB’, {часовой пояс: ‘UTC’})
- новый Intl.DateTimeFormat(‘en-US’).format(дата)
Метод Date.toLocaleFormat()
не является стандартным или не поддерживается должным образом.
Прежде чем обращаться к сторонней библиотеке, я предпочитаю использовать собственный метод toLocaleDateString
. Его поведение задокументировано под Intl.DateTimeFormat
.
константная дата = новая дата (2020) console.log(date.getFullYear())
Что будет включать вывод?
- 1969
- 1970
- 2019
- 2020
- 2021
Экземпляр Date не может быть создан с одним целым числом в качестве аргумента. Он недействителен и по умолчанию будет равен началу «компьютерного времени» (миллисекунды с 1 января 1970 года). год без смещения часового пояса (для этих вопросов предполагается GMT-7.)
Вы не заметите этот эффект, если вы живете в GMT-0 (или больше, чем GMT+1).
переменная дата = новая дата (дата.UTC (2020, 0, 1)) console.log(date.getUTCFullYear(), date.getFullYear() )
Что будет включать вывод?
- 2020 2020
- 2020 2019
- 2019 2020
- 2019 2019
Метод getFullYear()
основан на локальном смещении GMT-07:00. Это означает, что он даст предыдущий год, поскольку дата представлена локально 31 декабря 2019 17:00:00
.
const d = Дата.UTC(2020, 0, 1) console.log(d)
Что будет включать вывод?
- Экземпляр даты в формате UTC
- Экземпляр даты с поправкой на местный часовой пояс
- миллисекунд с 1 января 1970 года
- Ошибка
Вспомогательный метод Date. UTC
не возвращает экземпляр даты. Возвращает целое число в миллисекундах.
// Предположим, что местная TZ -07:00 const d = новая Дата(Дата.UTC(2020, 0, 1 )) console.log(d.getTimezoneOffset())
Что будет включать вывод?
- 0
- 420
- 700
- 1400
- ноль
Даты будут неявно представлены по местному времени с неизменным .getTimezoneOffset()
.
Экземпляры даты не хранят «исходные» данные часового пояса. Экземпляры даты по существу хранят только # миллисекунд с эпохи Unix (1 января 1970 г.). Часовой пояс учитывается при анализе строки даты. А поведение дисплея по умолчанию определяется автоматически на основе региональных настроек системы или браузера.
const d = новая дата (2020, 0, 1) d.setDate(1) console.log(d)
Что будет включать вывод?
- 01 января 2020
- 01 февраля 2020 г.
- RangeError: недопустимый аргумент.
Метод .setDate()
устанавливает день месяца на основе текущего месяца данного экземпляра.
Если указано значение, выходящее за пределы доступного количества дней, значение месяца экземпляра даты будет скорректировано (например, A setDate(32)
в январе будет считаться как 1 февраля.)
const d = новая дата (2020, 0, 1) d.setDate (0) console.log(d)
Что будет включать вывод?
- 01 января 2020
- 00 января 2020
- 01 февраля 2020 г.
- 31 декабря 2019 г.
- RangeError: недопустимый аргумент.
Метод setDate
устанавливает день месяца на основе текущего месяца данного экземпляра.
Если вы вызовете setDate(0)
, экземпляр даты будет настроен на последний день предыдущего месяца.
const d = новая дата (2020, 0, 1) d.setDate(32) console.log(d)
Что будет включать вывод?
- 01 января 2020
- 32 января 2020 г.
- 01 февраля 2020 г.
- RangeError: недопустимый аргумент.
Если для setDate
задано положительное целое число за пределами доступного количества дней, месяц и день экземпляра даты будут скорректированы по мере необходимости. (например, setDate(32)
в январе будет рассчитываться как 1 февраля.)
const d = новая дата (2020, 1, 1) d.setDate(100) console.log(d)
- 01 января 2020
- 01 февраля 2020 г.
- 01 мая 2020 г.
- 10 мая 2020 г.
- RangeError: недопустимый аргумент.
Подсказка: Установка даты с помощью setDate(X)
— это не то же самое, что добавление X
дней.