Далее на странице...
- Объект Date - Текущая дата now = new Date()
- Передаем в объект Date любую дату now = new Date(2022, 7, 2, 19)
- timestamp - 1970 - Число миллисекунд Число миллисекунд, прошедших с начала 1970 года now = new Date(0);
- Методы объекта Date get - получение компонентов ДАТЫ getDay - нумерация дней недели в JS начинается с 0
- Аналоги методов - UTC getHours - 20 часов; getUTCHours - 17 часов
- Метод getTimezoneOffset getTimezoneOffset - разница между текущим и временем UTC
- Метод getTime 1.1 timestamp - возвращает число миллисекунд. От начала 1970 года 1.2 До настоящего момента или до указанного времени 2.1 Метод getTime также возвращает Дату
- set - Установка времени и Даты setHours возвращает количество миллисекунд
- setHours - Второй аргумент
- Авто исправление
- Метод parse - Возвращает число миллисекунд parse разбирает строковое представление даты
- Объект Date - Пример использования в JS Узнать время выполнения скрипта
Работа с Датами - является обязательным навыком при изучении многих языков программирования.
Как и где используется объект Date?
Например, можно засекать время работы функции и сравнивать это время с продолжительностью работы какого-либо другого скрипта.
Часто объект Date используется для вывода текущей даты, создания таймера. Для хранения времени создания или изменения какого-либо документа и т.п.
Объект Date - Текущая дата
Объект Date содержит различные методы и свойства, которые будут рассмотрены далее. В простом варианте использования – объект Date выводит текущую Дату.
JavaScript-код
'use strict';
const now = new Date();
console.log(now);
Результат в консоли
Sat Jul 02 2022 19:13:28 GMT+0300 (Москва, стандартное время)
Результат в Браузере
Создаем новую ДАТУ (в данном случае это будет текущая дата) и помещаем ее в переменную. И выводим текущую дату и время.
Итак, в результате/в консоли мы получили такой вот формат текущей даты Sat Jul 02 2022 19:13:28.
Передаем в объект Date любую дату
В объект Date можно передать текущую или любую другую дату, используя следующий формат записи. Нули перед цифрами - не указываются.
JavaScript-код
'use strict';
const now = new Date(2022, 7, 2, 19); // передаем год, месяц, число и час
console.log(now);
Результат в консоли
Tue Aug 02 2022 19:00:00 GMT+0300
Сегодня суббота 2-е Июля 2022 года. Пробуем передать эту ДАТУ в объект Date. Но в результате мы увидим Tue Aug 02 2022 19:00:00 GMT+0300.
Вторник 2-е Августа. Почему? Ведь мы указали 7-ой месяц - Июль.
Необходимо знать и помнить, что нумерация месяцев в JS начинается с 0. То есть 0-ой месяц - это Январь. Соответственно 7-ой - это Август и т.д.
Если в объект Date передается дата без указания времени: то по умолчанию для указанной даты будет будет установлено время полуночи.
timestamp - 1970 - Число миллисекунд
Любая дата в JS хранится в миллисекундах.
Число миллисекунд, прошедших с начала 1970 года, называется таймстамп (англ. timestamp).
Пример 1
JavaScript-код
const now = new Date(0);
console.log(now);
Результат в консоли
Thu Jan 01 1970 03:00:00 GMT+0300 (Москва, стандартное время)
В объект Date передано 0 миллисекунд - в результате мы видим дату 1-го января 1970 года - это начало отсчета.
Пример 2
JavaScript-код
const now = new Date(123456789000);
console.log(now);
Результат в консоли
Fri Nov 30 1973 00:33:09 GMT+0300 (Москва, стандартное время)
Таким образом, любое число миллисекунд можно трансформировать в дату.
Также любая дата преобразуется в миллисекунды: за это отвечает метод getTime - об этом ниже.
Методы объекта Date
Первая группа методов объекта Date - отвечает за получение компонентов ДАТЫ.
Методы getFullYear, getMonth, getDate и getDay; getHours, getMinutes и getSeconds - эти методы возвращают текущий год, месяц, день, час, минуту и секунду в соответствии с текущим часовым поясом. Подробнее о них читайте здесь.
Особое внимание стоит обратить на метод getDay, так как нумерация дней недели в JS начинается с 0: ВОСКРЕСЕНЬЕ имеет порядковый номер 0, СУББОТА - номер 6 и т.д.
Аналоги методов - UTC
У выше перечисленных методов есть аналоги, которые возвращают время по UTC.
JavaScript-код
const now = new Date();
console.log(now.getHours());
console.log(now.getUTCHours());
Результат в консоли
20
17
Метод getHours вернул текущий час по МСК - 20 часов. А метод getUTCHours - текущий час по времени UTC - 17 часов.
Метод getTimezoneOffset
Метод getTimezoneOffset возвращает разницу между местным временем и временем UTC в минутах.
JavaScript-код
const now = new Date();
console.log(now.getTimezoneOffset());
Результат в консоли
-180
-180 минут - не сложно вычислить, что это -3 часа, т.е. разница между временем UTC и временем часового пояса GMT+0300 (Москва, стандартное время).
Метод getTime
Метод getTime возвращает timestamp - число миллисекунд, прошедших с начала 1970 года до текущей даты.
Пример 1
JavaScript-код
const now = new Date();
console.log(now);
console.log(now.getTime());
Результат в консоли
Sun Jul 03 2022 07:46:22 GMT+0300 (Москва, стандартное время)
1656823582413
В консоли мы видим текущие ДАТУ и время и число миллисекунд, прошедших с начала 1970 года до настоящего момента.
Пример 2
JavaScript-код
const now = new Date(2010, 0, 0);
console.log(now);
console.log(now.getTime());
Результат в консоли
Thu Dec 31 2009 00:00:00 GMT+0300 (Москва, стандартное время)
1262206800000
Здесь мы видим число миллисекунд, прошедших с начала 1970 года до полуночи 31 декабря 2009 года. Так работает метод getTime.
Точка отсчета будет все той же - начало 1970 года.
Этот прием часто используется на практике.
JavaScript-код
const now = new Date(1656823582413);
console.log(now);
Результат в консоли
Sun Jul 03 2022 07:46:22 GMT+0300
set - Установка времени и Даты
У вышеперечисленных методов есть противоположные методы, которые служат НЕ для получения (get), а для установки (set) времени и ДАТЫ.
Например, метод setHours устанавливает часы от 0 до 23 setHours(число от 0 до 23).
Метод setHours возвращает количество миллисекунд, прошедших с 1 января 1970 00:00:00 по UTC до указанного времени.
JavaScript-код
const now = new Date();
console.log(now);
console.log(now.setHours(18));
console.log(now);
Результат в консоли
Sun Jul 03 2022 09:32:12 GMT+0300 (Москва, стандартное время)
1656862332194
Sun Jul 03 2022 18:32:12 GMT+0300 (Москва, стандартное время)
1. Выводим текущее время.
2. setHours - Устанавливаем время 18 часов. При этом метод setHours возвращает количество миллисекунд, прошедших с 1 января 1970 00:00:00 по UTC до 18 часов текущей Даты.
3. Выводим время, установленное методом setHours. Дата остается прежней/текущей.
setHours - Второй аргумент
Метод setHours может принимать 2 аргумента.
При этом вторым аргументом будут минуты. Но это редко используется, так как подразумевается и ожидается, что метод setHours - это все же установка часов.
JavaScript-код
const now = new Date();
console.log(now);
now.setHours(18, 55);
console.log(now);
Результат в консоли
Tue Jul 05 2022 12:35:38 GMT+0300 (Москва, стандартное время)
Tue Jul 05 2022 18:55:38 GMT+0300 (Москва, стандартное время)
Авто исправление
Авто исправление в работе с датами в JS.
Что будет, если в методе setHours указать число отличное от диапазона от 0 до 23 часов? Например, 40?
JavaScript-код
const now = new Date();
console.log(now);
now.setHours(40);
console.log(now);
Результат в консоли
Tue Jul 05 2022 21:22:54 GMT+0300 (Москва, стандартное время)
Wed Jul 06 2022 16:22:54 GMT+0300 (Москва, стандартное время)
Здесь JavaScript автоматически добавил 40 часов к текущему времени - в результате мы видим время и дату следующего дня.
Метод parse - Возвращает число миллисекунд
Метод parse разбирает строковое представление даты и возвращает количество миллисекунд, прошедших с 1 января 1970 года 00:00:00 по UTC.
JavaScript-код
const now = new Date('2020-05-25');
console.log(now);
const nowParse = Date.parse('2020-05-25');
console.log(nowParse);
Результат в консоли
Mon May 25 2020 03:00:00 GMT+0300 (Москва, стандартное время)
1590364800000
Объект Date - Пример использования в JS
Рассмотрим один из примеров - как Даты могут использоваться в JS.
Объект Date можно использовать для измерения каких-либо промежутков времени.
Например, как узнать время выполнения скрипта?
JavaScript-код
'use strict';
let start = new Date(); // Начало выполнения скрипта
console.log(start);
for(let i = 0; i < 2000000000; i++) {
let some = i ** 3; // Возведение в 3-ю степень
}
let end = new Date(); // Конец выполнения скрипта
console.log(end);
alert(`Время выполнения скрипта ${end - start} миллисекунд`);
Результат в консоли
Tue Jul 05 2022 22:17:34 GMT+0300 (Москва, стандартное время)
Tue Jul 05 2022 22:17:37 GMT+0300 (Москва, стандартное время)
Результат в Браузере
Время выполнения скрипта - около 3-х секунд.