Работа с датами

Создадим объект даты и поместим в переменную:

Код
const now = new Date();

Таким образом мы узнаем текущую дату и время, выведем информацию в консоль:

Код
console.log(now);

Цитата
2026-01-31T06:17:29.008Z

При создании нового объекта даты, в скобки мы можем передавать различные аргументы:

Код
const now = new Date('2026-01-31');
console.log(now);

Цитата
2026-01-31T00:00:00.000Z

Можно передавать список параметров: год, месяц, число, часы, минуты, секунды

Код
const now = new Date(2026, 1, 31, 13);
console.log(now);

Цитата
2026-03-03T10:00:00.000Z

Месяцы в JS начинают отсчёт с нуля (например, 0 - это январь), нужно это учитывать.

Плюс, во входящих параметрах указывалось 13 часов, а в консоли вывелось 10 часов. Это произошло потому, что учитываются часовые пояса.
В консоли вывод по Гринвичу, у меня часовой пояс +3, получается 13 - 3 = 10 по Гринвичу.

Любая дата в JS хранится в миллисекундах. Это значение называется timestamp и им очень удобно оперировать. 

Количество миллисекунд отсчитывается от начала 1970 года.

Чтобы убедиться, передадим в объект даты 0 миллисекунд:

Код
const now = new Date(0);
console.log(now);

Цитата
1970-01-01T00:00:00.000Z


Можно также в качестве аргумента передавать количество миллисекунд, которое потом преобразуется в дату.

Если нужно получить дату до 1970 года, используется отрицательное значение миллисекунд:

Код
const now = new Date(-58745424154);
console.log(now);

Цитата
1968-02-21T01:49:35.846Z

У объекта даты очень много полезных методов.

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

Код
const now = new Date();
console.log(now.getFullYear()); // 2026 - год
console.log(now.getMonth()); // 0 - месяц (январь)
console.log(now.getDate()); // 31 - число
console.log(now.getHours()); // 9 - часы
console.log(now.getMinutes()); // 44 - минуты
console.log(now.getSeconds()); // 13 - секунды
console.log(now.getMilliseconds()); // 987 - миллисекунды

Интересная особенность при получении дня недели, в этом случае нумерация дней начинается не с понедельника, а с воскресенья (это будет нулевой день).

Код
console.log(now.getDay()); // 6 - суббота

Все эти методы возвращают нам значения в соответствии с местным часовым поясом. Если нужно получить значения в формате UTC, то это делается таким образом:

Код
console.log(now.getHours()); // 9 - часы по местному поясу
console.log(now.getUTCHours()); // 6 - часы по UTC

А так можно получать разницу между часовым поясом и UTC ( в минутах):

Код
console.log(now.getTimezoneOffset()); // -180

Метод getTime() будет нам возвращать таймстамп:

Код
console.log(now.getTime()); // 1769891097382

Его можно превратить в дату, если поместить внутрь new Date()

Код
const now = new Date(1769891097382);

console.log(now); // 2026-01-31T20:24:57.382Z

Всё перечисленное выше - это методы-геттеры для получения чего-либо.

Теперь рассмотрим методы-сеттеры, с помощью которых мы можем установить что-либо.

Например, чтобы установить часы:

Код
const now = new Date();

console.log(now.setHours(18)); // 1769873449681

console.log(now); // 2026-01-31T15:30:49.681Z

Консоль VSCode ориентируется на UTC-зону, а не на локальные данные системы компьютера, поэтому выводит отличное время.

Если же посмотреть результат в браузере, то он будет ориентироваться именно на локальные данные компьютера и время там будет другое.

Команды set похожи на команды get, заменяется только get на set.

При работе с датами используется также метод parse(), вот эта конструкция:

Код
new Date.parse('2026-01-31');

вернёт нам такой же результат, как если бы мы выполнили вот эту команду:

Код
const now = new Date('2026-01-31');

Мы можем использовать даты для измерения каких-то промежутков времени.

За стартовую дату мы берём текущую дату:

Код
let start = new Date();

Далее у нас будет выполняться какой-то код, время выполнения которого нам и нужно засечь.

Код
for (let i = 0; i < 100000; i++) {
  let some = i ** 3; // возведение в степень 3
}

Далее в переменную end мы вновь помещаем текущую дату с временем:

Код
let end = new Date();

Смотрим разницу этих двух дат в миллисекундах:

Код
console.log(`Цикл отработал за ${end - start} миллисекунд`);

Цитата
Цикл отработал за 6 секунд


Документация по DateСтатья

Всего комментариев: 0

Имя *:
Email *:
Код *:
Хостинг от uCoz