Дата и время в JavaScript

В JavaScript существует встроенный объект Date для обработки всех операций, связанных с датой и временем. Например, вы можете использовать его для отображения текущей даты и времени, создания календаря, построения таймера и многое другое.

Как создать объект Date

Чтобы узнать, как создать новый объект Date, следуйте шагам ниже.

Обратите внимание, что оператор new обычно используется для создания объекта даты.

Вызовите new Date (), выбрав один из следующих аргументов:

new Date()

Вы можете создать объект Date для текущей даты и времени без аргументов, как это показано здесь:

Create Date object javascript
let nowDate = new Date(); console.log(nowDate); // shows current date/time

Это действие возвращает текущую дату с временем и временной зоной.

Можно выделить другие способы создания Date с помощью оператора new.

Новая дата с миллисекундами

Создание объекта Date со временем, равным числу миллисекунд, прошедших после 1 января 1970 года по UTC+0.

Вот пример:

Date object javascript
// 0 means 01.01.1970 UTC+0 let startDate = new Date(0); console.log(startDate); // now add 24 hours, get 02.01.1970 UTC+0 let startTime = new Date(24 * 3600 * 1000); console.log(startTime);

В этом примере метка времени используется для представления количества миллисекунд, прошедших с начала 1970 года.

Создание объекта Date с использованием dateString

Можно создать объект Date, передав строковое представление даты. Строковое представление будет принято, если его можно проанализировать с помощью Date.parse().

Вот пример:

Date object javascript
let date = new Date("2019-12-26"); console.log(date); //The isn't a fixed time, so it's expected to be midnight GMT and // is modified according to the timezone, in which the code is run // So the result could be // Thu Dec 26 2019 04:00:00 GMT+1100 (Australian Eastern Daylight Time)

Допустим следующий формат: new Date(year, month, date, hours, minutes, seconds, ms). Вы также должны следовать этим правилам:

  • Year должен состоять из четырех цифр (например, 2020);
  • Счет month должен начинаться с 0 (Например, 0 это январь, а 11 это декабрь);
  • День месяца - это параметр date; если его нет, вы должны предположить 1.
  • В случае если hours/minutes/seconds/ms отсутствуют, вы должны предположить, что они равны 0.

Например:

new Date(2019, 0, 1, 0, 0, 0, 0); // 1 Jan 2019, 00:00:00
new Date(2019, 0, 1); // the same, hours etc are 0 by default

Минимальная точность должна быть одной миллисекундой.

Например:

Date object javascript
let date = new Date(2019, 1, 1, 2, 3, 4, 567); console.log(date);

Доступ к компонентам даты

Теперь мы узнаем способы доступа к компонентам данных. Вот они:

getFullYear()

получение года (должно быть 4 цифры).

getMonth()

получение месяца (от 0 до 11).

getDate()

получение дня месяца (от 1 до 31).

getHours(),
 getMinutes(),
 getSeconds(),
 getMilliseconds()

получение соответствующих компонентов времени.

Важно использовать getFullYear(), а не getYear(), так как последний устарел и может иногда возвращать год из 2 цифр. Поэтому его лучше никогда не использовать в практике.

Кроме того, можно даже получить день недели, вызвав:

getDay()

Это позволит вам получить день недели от воскресенье 0 до суббота 6.

Как установить компоненты даты

В JavaScript используются несколько методов для установки компонентов даты и времени. Среди них:

setFullYear(year, [month], [date])
setMonth(month, [date])
setDate(date)
setHours(hour, [min], [sec], [ms])
setMinutes(min, [sec], [ms])

Некоторые методы могут устанавливать несколько компонентов одновременно. Например, setHours.

Вот пример:

Set date and time object javascript
let today = new Date(); today.setHours(0); console.log(today); // still today, but the hour is changed to 0 today.setHours(0, 0, 0, 0); console.log(today); // still today, now 00:00:00 sharp.

Автокоррекция

Удобной функцией объектов Date является автокоррекция. Вы можете установить значения, которые выходят за пределы диапазона, и они автоматически скорректируются.

Например:

Set date and time object javascript
let date = new Date(2019, 8, 32); // 32 Sep 2019 console.log(date);

Дата в число, разница в датах

Когда вы преобразуете Date в число, он преобразуется в метку времени, подобно date.getTime().

Рассмотрим следующий пример:

Set date and time object javascript
let msDate = new Date(); console.log(+msDate); // it's a same as date.getTime(), it's the number of milliseconds

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

Date object in javascript
let startDate = new Date(); // start measuring time for (let x = 0; x < 10000; x++) { let smth = x * x * x; } let endDate = new Date(); // end measuring time console.log(`The loop took ${endDate - startDate} ms`);

Date.now()

Если вы решите измерить время, вам не обязательно использовать объект Date. Вы можете использовать Date.now(), который вернет текущую метку времени.

Например:

Date object in javascript
let startDate = Date.now(); // milliseconds count from 1 Jan 1970 for (let x = 0; x < 10000; x++) { let doSomething = x * x * x; } let endDate = Date.now(); console.log(`The loop took ${endDate - startDate} ms`);

Date.parse из строки

Если вы хотите прочитать дату из строки, Date.parse(str) поможет вам. Формат строки должен быть: MM-DDTHH:mm:ss.sssZ. Также возможны несколько более коротких вариантов: YYYY-MM-DD или YYYY-MM или даже YYYY.

Вот пример использования Date.parse(str):

Date object in javascript
let ms = Date.parse('2019-02-28T14:52:20.254-08:00'); console.log(ms); // 1551394340254, it’s a timestamp

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

Date parse in javascript
let date = new Date(Date.parse('2019-02-28T14:52:20.254-08:00')); console.log(date);

Резюме

В JavaScript объект Date используется для представления даты и времени. Объект Date включает в себя оба этих элемента. В общем, месяцы считаются, начиная с нуля и заканчивая 11. Дни недели также считаются, начиная с нуля. В JavaScript даты могут вычитаться, и за этими вычитаниями идет их разница в миллисекундах, так как при преобразовании в число Date преобразуется в метку времени. Наконец, в отличие от других систем, в JavaScript метки времени указываются в миллисекундах, а не в секундах.

Время Викторины: Проверьте Свои Навыки!

отовы проверить свои знания? Погрузитесь в наши интерактивные викторины для более глубокого понимания и веселого способа закрепить знания.

Считаете ли это полезным?