«Единственный способ творить великие дела – это любить то, что ты делаешь»
JavaScript

Игра на «Морской Бой» на JavaScript: Простая Игра и Игра для Двоих


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

Как и где используется объект 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.

Если число миллисекунд указать в качестве аргумента объекта Date, то он вернет соответствующую ДАТУ.

Точка отсчета будет все той же - начало 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-х секунд.



Читайте также...

Отзывы и комментарии:

Комментариев нет...

Оставить отзыв:

Ваше Имя:

Текст комментария:

Ответьте на вопрос:

Сколько дней в Високосном году?


Рунет - Часть 5
Помощь сайту
Yandex-деньги/Ю-Money
410011236419322
Перевод на карту СБ
4276 1300 1671 5819
WebMoney
R711879515665 Z861169301432
Популярные заметки
Последние заметки