hellojs.ru
Главная - JavaScript в работе - Работа с датами

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

Размещено в категории "JavaScript в работе"
06.11.2024 / просмотров: 45 / комментариев: 0
Ресурсы:

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




Data - специфический объект со своими методами и свойствами.

Создание нового объекта даты:

Код

const now = new Date();

console.log(now);

Таким образом, в переменной сохраняется текущая дата и время в таком формате:

Цитата

2023-06-25T07:04:24.243Z

здесь T - разделитель, слева дата, справа - время до миллисекунд

В дату мы можем передавать какие-то аргументы, например, дату в виде строки:

Код

const now = new Date('2023-01-21');

const now = new Date.parse('2023-01-21'); // равнозначно строке выше, только с методом parse

В консоли получаем:

Цитата

2023-01-21T00:00:00.000Z

В правой части нули по дефолту, так как мы не передавали время как аргумент.

Можно указывать так:

Код

const now = new Date(2023,1,21,20);

Здесь 20 - какое-то количество часов.

Месяцы в дата считаются с 0, то есть 0 - это январь. Поэтому в консоли будет февраль:

Цитата

2023-02-21T17:00:00.000Z

Мы задали 20 часов, но в консоли отображается 17. Часовой пояс +3, поэтому по Гринвичу будет 17.

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

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

Цитата

Количество миллисекунд отсчитывается с начала 1970-го года, убедимся:

Код

const now = new Date(0);

Цитата

1970-01-01T00:00:00.000Z

То есть, все даты отсчитываются от этой.

Поэтому, при необходимости, любую дату можно преобразовать в миллисекунды и наоборот.

Чтобы получить дату до 1970-го года, используются отрицательные значения миллисекунд:

Код

const now = new Date(-999999999999);

Цитата

1938-04-24T22:13:20.001Z

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



Код

const now = new Date();

console.log(now.getFullYear()); // 2023

console.log(now.getMonth()); // текущий месяц, например, 5 это июнь

console.log(now.getDate()); // текущее число, по факту

getHours() получаем часы (0 - 23)
getMinutes() получаем минуты (0 - 59)
getSeconds() получаем секунды (0 - 59)
getMilliseconds() получаем миллисекунды (0 - 999)
getDay() день недели (0 - 6, где 0 - это воскресенье)

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

Часовой пояс по UTC, то есть, +0, аналогично:

Код

now.getUTCHours();

Получить разницу между часовым поясом и UTC позволяет метод:

Код

getTimezoneOffset(); // в минутах, например -180

Определяем тайм-стемп (количество миллисекунд, прошедшее с 1 января 1970 года):

Код

getTime();

например:

Код

console.log(now.getTime()); // 1687679876951

Если полученное число поместить в new Data(), получим дату:

Код

const now = new Date(1687679876951);
console.log(now); // 2023-06-25T07:57:56.951Z

Методы-сеттеры (для установки даты)



Код

const now = new Date();

now.setHours(18);

Методы те же, только get меняем на set и устанавливаем значение.

Можно сразу установить часы и минуты:

Код

now.setHours(18, 40);

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

Код

let start = new Date();

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

Код

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

И нам нужно засечь время, через которое наш цикл закончит работу

Код

let end = new Date();

Теперь можно узнать разницу этих двух дат в миллисекундах:

Код

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

Цитата

Цикл отработал за 25 миллисекунд
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
Сайт управляется системой uCoz