Работа с Датой в JS

1. Класс Date

Работа с промежутками времени - это одна из наиболее популярных задач: часы, календари и прочее. JavaScript предоставляет класс Date, который абстрагирует большую часть работы с датами напрямую. Это позволяет нам представлять моменты во времени и манипулировать ими всего несколькими строками кода.

2. Создание даты

Создание даты очень просто. Просто создайте новый экземпляр встроенного класса Date.

const date = new Date();
console.log(date); // Mon Mar 19 2018 16:51:32 GMT+0200 (FLE Standard Time)
Copy

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

2.1. Datestring

Если передать строку, она будет обработана методом Date.parse(), чтобы вернуть объект Date.

Допустим необходимо создать событие на дату 4 марта 2017 года.

const date = new Date('March 4, 2017');
console.log(date); // Sat Mar 04 2017 00:00:00 GMT+0200 (FLE Standard Time)
Copy

2.2. 7 аргументов

Другой способ создания новых объектов Date — это передать 7 чисел. Эти числа описывают год, месяц, день, час, минуту, секунду и миллисекунду.

Последние 4 аргумента необязательны.

3. Unix время

В области информатики существует концепция эпохи Unix. Этот момент времени установлен на полночь 1 января 1970 года в часовом поясе UTC.

С учетом этой системы отсчета, если вы передаете число объекту Date, это число представляет собой количество миллисекунд, прошедших с тех пор.

Чтобы увидеть число миллисекунд от этой даты до текущего момента, используется статический метод Date.now().

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

4. Методы Date

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

4.1. Геттеры

Вот все методы получения информации из объекта Date:

Давайте поэкспериментируем:

4.2. Сеттеры

Все, что можно прочитать можно записать, методы для записи начинаются с set*.

5. Форматирование и вывод дат

Во всех браузерах, кроме IE10-, поддерживается новый стандарт, который добавляет специальные методы для форматирования дат.

Это делается вызовом date.toLocaleString(locale, opts), в котором можно задать много настроек. Он позволяет указать, какие параметры даты нужно вывести и ряд настроек вывода, после чего интерпретатор сам сформирует строку.

5.1. Методы вывода без локализации

toString(), toDateString(), toTimeString() возвращают стандартное строчное представление, не заданное жёстко в стандарте, а зависящее от браузера. Единственное требование к нему — читаемость человеком. Метод toString() возвращает дату целиком, toDateString() и toTimeString() — только дату и время соответственно.

6. Дополнительные материалы

Last updated