Часто бывает необходимо получить доступ или произвести вычисления с датой и временем в программах на JavaScript. Чтобы справиться с такими ситуациями, в язык встроено несколько инструментов даты. В частности, JavaScript предоставляет объект Дата, который предоставляет способы создания новых дат и несколько методов для работы с ними. Даты в JavaScript имеют встроенную функциональность для работы с датой и временем в формате UTC (всемирное координированное время).

Создание дат

Объект даты имеет несколько различных способов создания новой даты с помощью конструктора:

  1. указав части данных даты - год, месяц, дату, часы, минуты, секунды и миллисекунды
  2. с числом, представляющим отметку времени
  3. со строкой даты
  4. вызывая конструктор без каких-либо параметров, который вернет текущую дату и время
// Using date parts
let july4thDate = new Date(2021, 6, 4, 0, 0, 0); // 2021-07-04T04:00:00.000Z
// using a time stamp number
let dateInThe1990s = new Date(721484611197); // 1992-11-11T12:23:31.197Z
// using a date string
let newYearsDate2000 = new Date('2000-01-01'); // 2000-01-01T00:00:00.000Z
// Date constructor without any parameters
let currentDate = new Date(); // 2021-07-28T15:12:42.769Z

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

  • год - обязательное целое число, представляющее год. Значения 0–99 будут добавлены к 1900. Например, 88 соответствует 1988 году.
  • месяц - обязательное значение индекса от 0 до 11, соответствующее каждому месяцу в году. Например, значение индекса 3 даст месяц 4 (или апрель).
  • день - необязательное целое число, представляющее день месяца (по умолчанию - 1).
  • часы - необязательное целое число, представляющее час дня (0 - полночь).
  • минут - необязательное целое число, представляющее минуты времени.
  • секунды - необязательное целое число, представляющее секунды времени.
  • миллисекунды - необязательное целое число, представляющее миллисекунды времени.

Некоторые примеры создания дат с частями даты:

new Date(2021, 0, 12); // 2021-01-12T05:00:00.000Z
new Date(1999, 11, 31, 12, 59, 59); // 1999-12-31T17:59:59.000Z
new Date(2009, 5, 20, 10, 30, 15, 232); // 2009-06-20T14:30:15.232Z

Создание новой даты с помощью конструктора Date без каких-либо параметров эквивалентно вызову статического метода Date.now() и вернет текущую дату и время. После создания новой даты с помощью конструктора возвращается объект даты, который затем может использовать многие методы экземпляра, доступные для объекта Date.

Работа с датой и временем

Объект Date предоставляет методы для получения и установки всех частей экземпляра Date, включая:

  • Полный год
  • Месяц
  • Дата
  • Часы
  • Минуты
  • Секунды
  • Миллисекунды

Эти методы можно использовать с формулировкой get или set перед каждым ключевым словом. Методы set требуют передачи целого числа в качестве параметра.

let myDate = new Date(2009, 5, 20, 10, 30, 15, 232);
myDate.getFullYear(); // 2009
myDate.setFullYear(2021); // 1624199415232
myDate.getFullYear(); // 2021
myDate.getDate(); // 20

Есть еще один метод getDay(), который возвращает целое число от 0 до 6, представляющее день недели.

myDate.getDay(); // 0 (Sunday)

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

  • getTime () - возвращает число, представляющее отметку времени.
  • valueOf () - как и getTime(), возвращает число, представляющее отметку времени.
  • toString () - возвращает полностью отформатированную строку даты и времени.
  • toDateString () - возвращает форматированную строку даты.
  • toTimeString () - возвращает отформатированную строку времени.
  • toLocaleDateString () - возвращает локально чувствительную строку даты.
  • toLocaleTimeString () - возвращает локально чувствительную строку времени.
let myDate = new Date(2009, 5, 20, 10, 30, 15, 232);
myDate.getTime(); // 1245508215232
myDate.valueOf(); // 1245508215232
myDate.toString(); // 'Sat Jun 20 2009 10:30:15 GMT-0400 (Eastern Daylight Time)'
myDate.toDateString(); // 'Sat Jun 20 2009'
myDate.toTimeString(); // '10:30:15 GMT-0400 (Eastern Daylight Time)'
myDate.toLocaleDateString(); // '6/20/2009'
myDate.toLocaleTimeString(); // '10:30:15 AM'

Заключение

Используя множество ресурсов, доступных с объектом Date, можно создавать предварительно отформатированные строки даты или выполнять вычисления даты и времени, чтобы найти такую ​​информацию, как время, прошедшее между двумя датами, или дни недели для значений дат. Хотя у Dateobject есть некоторые ограничения, такие как отсутствие поддержки часовых поясов и форматирования строк даты иным способом, чем несколько встроенных методов форматирования, работа с датами не так уж сложна. Ресурсы, доступные для работы с датами в JavaScript, могут обрабатывать множество различных ситуаций, возникающих при работе с датами и временем.

Больше контента на plainenglish.io