Skip to main content

Дата и время

  • Дата и время в JavaScript представлены объектом Date. Нельзя создать «только дату» или «только время»: объекты Date всегда содержат и то, и другое.
  • Счёт месяцев начинается с нуля (да, январь – это нулевой месяц).
  • Дни недели в getDay() также отсчитываются с нуля, что соответствует воскресенью.
  • Объект Date самостоятельно корректируется при введении значений, выходящих за рамки допустимых. Это полезно для сложения/вычитания дней/месяцев/недель.
  • Даты можно вычитать, и разность возвращается в миллисекундах. Так происходит, потому что при преобразовании в число объект Date становится таймстампом.
  • Используйте Date.now() для быстрого получения текущего времени в формате таймстампа.

Создание

  • new Date() Без аргументов – создать объект Date с текущими датой и временем
  • new Date(milliseconds) Создать объект Date с временем, равным количеству миллисекунд (тысячная доля секунды), прошедших с 1 января 1970 года UTC+0.
  • new Date(datestring) Если аргумент всего один, и это строка, то из неё «прочитывается» дата.
  • new Date(year, month, date, hours, minutes, seconds, ms) Создать объект Date с заданными компонентами в местном часовом поясе. Обязательны только первые два аргумента.

Получение компонентов даты

  • getFullYear() - Получить год (4 цифры)
  • getMonth() - Получить месяц, от 0 до 11.
  • getDate() - Получить день месяца, от 1 до 31, что несколько противоречит названию метода.
  • getHours(), getMinutes(), getSeconds(), getMilliseconds() - Получить, соответственно, часы, минуты, секунды или миллисекунды.
  • getDay() Получить определённый день недели
  • getTime() Для заданной даты возвращает таймстамп – количество миллисекунд, прошедших с 1 января 1970 года UTC+0.
  • getTimezoneOffset() Возвращает разницу в минутах между UTC и местным часовым поясом:

Все вышеперечисленные методы возвращают значения в соответствии с местным часовым поясом.

Установка компонентов даты

  • setFullYear(year, [month], [date])
  • setMonth(month, [date])
  • setDate(date)
  • setHours(hour, [min], [sec], [ms])
  • setMinutes(min, [sec], [ms])
  • setSeconds(sec, [ms])
  • setMilliseconds(ms)
  • setTime(milliseconds) (устанавливает дату в виде целого количества миллисекунд, прошедших с 01.01.1970 UTC)

У всех этих методов, кроме setTime(), есть UTC-вариант, например: setUTCHours().

Автоисправление даты

Автоисправление – это очень полезная особенность объектов Date. Можно устанавливать компоненты даты вне обычного диапазона значений, а объект сам себя исправит.

let date = new Date(2013, 0, 32); // 32 Jan 2013 ?!?
alert(date); // ...1st Feb 2013!

Преобразование к числу, разность дат

Если объект Date преобразовать в число, то получим таймстамп по аналогии с date.getTime() Важный побочный эффект: даты можно вычитать, в результате получаем разность в миллисекундах.

Date.now()

Существует особый метод Date.now(), возвращающий текущую метку времени.

Семантически он эквивалентен new Date().getTime(), однако метод не создаёт промежуточный объект Date. Так что этот способ работает быстрее и не нагружает сборщик мусора.

Разбор строки с датой

Метод Date.parse(str) считывает дату из строки.

Формат строки должен быть следующим: YYYY-MM-DDTHH:mm:ss.sssZ, где:

  • YYYY-MM-DD – это дата: год-месяц-день.
  • Символ "T" используется в качестве разделителя.
  • HH:mm:ss.sss – время: часы, минуты, секунды и миллисекунды.
  • Необязательная часть 'Z' обозначает часовой пояс в формате +-hh:mm. Если указать просто букву Z, то получим UTC+0.

Возможны и более короткие варианты, например, YYYY-MM-DD или YYYY-MM, или даже YYYY.

Вызов Date.parse(str) обрабатывает строку в заданном формате и возвращает таймстамп (количество миллисекунд с 1 января 1970 года UTC+0). Если формат неправильный, возвращается NaN.

🚀 Источник: https://learn.javascript.ru/date