Автоматическая корректировка дат в JavaScript
JavaScript имеет очень интересную и полезную особенность: если при создании объекта Date был указан некорректный момент времени — он автоматически будет пересчитан в корректный. Давайте посмотрим на примере.
Как вы знаете, даты 35 января не существует. Максимально возможный день января — 31 . Получается, что наша дата 35 января имеет 4 лишних дня. JavaScript в таком случае просто прибавит эти лишние 4 дня к следующему месяцу:
let date = new Date(2018, 0, 35); console.log(date); // получится 4 февраля
Можно указывать не только лишние дни, но и месяцы. При этом следует помнить, что месяцы начинаются с нуля, а значит последний корректный месяц — 11 -тый. Если указать 12 -тый месяц, то получится январь следующего года:
let date = new Date(2018, 12, 1); // указываем 12-тый месяц console.log(date); // получится 1 января 2019 года
Описанная корректировка работает и в меньшую сторону. Как вы знаете, самым минимальным днем месяца является день с номером 1 . Поэтому, если указать день с номером 0 , то получится последний день предыдущего месяца:
let date = new Date(2018, 1, 0); // указываем нулевой день console.log(date); // получится 31 января
Можно также указывать отрицательные значения дней и месяцев. При этом нужно помнить, что минимальный день имеет номер 1 , а минимальный месяц — номер 0 . Это значит, что минус первый день попадает во 2 день с конца предыдущего месяца, а минус первый месяц попадает просто в последний месяц предыдущего года:
let date = new Date(2018, 1, -1); // указываем -1 день console.log(date); // получится 30 января
let date = new Date(2018, -1, 1); // указываем -1 месяц console.log(date); // получится 1 декабря 2017 года
Все сказанное выше аналогично работает с часами, минутами и секундами:
let date = new Date(2018, 0, 1, 24, 0, 0); // указываем 24-тый час console.log(date); // получится 2 января, 0 часов
let date = new Date(2018, 0, 1, 25, 0, 0); // указываем 25-тый час console.log(date); // получится 2 января, 1 час
Определите, в какую дату JavaScript преобразует следующий момент времени:
let date = new Date(2018, 1, 35); console.log(date); // какая дата будет?
Определите, в какую дату JavaScript преобразует следующий момент времени:
let date = new Date(2018, 15, 1); console.log(date); // какая дата будет?
Определите, в какую дату JavaScript преобразует следующий момент времени:
let date = new Date(2018, 3, 31); console.log(date); // какая дата будет?
Определите, в какую дату JavaScript преобразует следующий момент времени:
let date = new Date(2018, 1, 31); console.log(date); // какая дата будет?
Определите, в какую дату JavaScript преобразует следующий момент времени:
let date = new Date(2018, 12, 33); console.log(date); // какая дата будет?
Определите, в какую дату JavaScript преобразует следующий момент времени:
let date = new Date(2018, 33, 33); console.log(date); // какая дата будет?
Определите, в какую дату JavaScript преобразует следующий момент времени:
let date = new Date(2018, 5, 0); console.log(date); // какая дата будет?
Определите, в какую дату JavaScript преобразует следующий момент времени:
let date = new Date(2018, 0, 0); console.log(date); // какая дата будет?
Определите, в какую дату JavaScript преобразует следующий момент времени:
let date = new Date(2018, -12, -33); console.log(date); // какая дата будет?
Определите, в какую дату JavaScript преобразует следующий момент времени:
let date = new Date(2018, 0, 1, 23, 0, 60); console.log(date); // какая дата будет?
Определите, в какую дату JavaScript преобразует следующий момент времени:
let date = new Date(2018, 0, 1, 23, 60, 0); console.log(date); // какая дата будет?
Определите, в какую дату JavaScript преобразует следующий момент времени:
Дата и время JS: все, что нужно знать
Изучаем дату и время JS. В этой статье я расскажу все, что вам нужно знать об объекте Date, входящем в состав JavaScript.
Часовые пояса
В JavaScript для операций с датами используется только два часовых пояса: местное время и всемирное координированное время (UTC).
- Местное время относится к часовому поясу вашего компьютера.
- UTC на практике является синонимом времени по Гринвичу (GMT).
По умолчанию почти каждый метод объекта Date возвращает дату и время по местному часовому поясу. Вы получите UTC, только если явно укажете это.
Создание даты
Вы можете создать дату, использовав оператор new:
- Со строкой даты.
- С аргументами даты.
- С меткой времени.
- Без аргументов.
Способ со строкой даты
Мы передаем строку даты в конструктор new Date .
new Date('1988-03-21')
Но если вы передадите строковое представление даты в формате 21-03-1988, то получите ошибку.
new Date(’21-03-1988′) приводит к ошибке Invalid Date.
В JavaScript нужно использовать формат даты, который принят во всем мире — ISO 8601.
// Расширенный формат ISO 8601 `YYYY-MM-DDTHH:mm:ss:sssZ`
Вот что означают значения:
- YYYY : 4-значный год;
- MM : двузначный месяц (где январь 01, а декабрь 12);
- DD : двузначная дата (от 01 до 31);
- — : разделители даты;
- T : указывает на начало блока времени;
- HH : часы в 24-часовом формате (от 00 до 23);
- mm : минуты (от 00 до 59);
- ss : секунды (от 00 до 59);
- sss : миллисекунды (от 000 до 999);
- : : разделители времени;
- Z : если Z присутствует, дата будет установлена в UTC. Если Z отсутствует, это будет местное время.
Часы, минуты, секунды и миллисекунды необязательны, если вы создаете дату. Если нужно передать дату 11 июня 2019 года:
new Date('2019-06-11')
Но если вы находитесь к востоку от Гринвича, то получите дату 10 июня.
new Date(‘2019-06-11’) выдаёт 10 июня, если вы находитесь к востоку от Гринвича
Если в районе, который опережает время по Гринвичу, то получите дату 11 июня.
new Date(‘2019-06-11’) выдаёт 11 июня, если вы находитесь к западу от Гринвича
Это происходит потому, что вы передаете дату без указания времени. В итоге JavaScript выводит дату, установленную в UTC.
Строка кода new Date(‘2019-06-11’) создает дату 11 июня 2019, 12:00 UTC. Вот почему люди, которые живут восточнее Гринвича, получают 10 июня вместо 11 июня.
Если вы хотите создать дату по местному часовому поясу, необходимо указать время. Когда вы включаете в дату время, вам нужно добавить, как минимум, часы и минуты (иначе Google Chrome возвращает недопустимую дату).
new Date('2019-06-11T00:00')
Дата по местному времени и дата в UTC.
Кстати, MDN предостерегает от использования строкового представления даты, поскольку браузеры могут ее трактовать по-разному.

MDN не рекомендует создавать даты с помощью строкового представления .
Создание дат с помощью аргументов
Конструктор Date принимает семь параметров:
- Год : четырехзначный год.
- Месяц : месяц года (0-11). По умолчанию 0.
- День : день месяца (1-31). По умолчанию 1.
- Час : час дня (0-23). По умолчанию 0.
- Минуты : Минуты (0-59). По умолчанию 0.
- Секунды : секунды (0-59). По умолчанию 0.
- Миллисекунды : миллисекунды (0-999). По умолчанию 0.
// 11 июня 2019г. 5:23:59 местного времени new Date(2019, 5, 11, 5, 23, 59)
Многие разработчики избегают подхода с использованием аргументов, потому что он выглядит сложным. Но на самом деле все довольно просто.
new Date(2017, 3, 22, 5, 23, 50) // Эту дату легко понять, если читать ее слева направо. // Год: 2017 // Месяц: апрель (потому что месяца считаются с 0) // Дата: 22 // Часы: 05 // Минут: 23 // Секунды: 50
Но помните, что порядок месяца начинаются с нуля. Например, январь – 0, февраль – 1, март – 2 и т. д.
Вот еще несколько примеров для закрепления:
// 21 марта 1988г. 00:00 местного времени new Date(1988, 2, 21) // 25 декабря 2019г. 8:00 местного времени new Date(2019, 11, 25, 8) // 6 ноября 2023г. 2:20 местного времени new Date(2023, 10, 6, 2, 20) // 11 июня 2019г. 5:23:59 местного времени new Date(2019, 5, 11, 5, 23, 59)
Даты, созданные с помощью аргументов, указаны по местному времени. Если вам понадобится дата в формате UTC, используйте следующий синтаксис:
// 11 июня 2019 00:00 UTC. new Date(Date.UTC(2019, 5, 11))
Создание дат с помощью меток времени
В JavaScript метка времени – это количество миллисекунд, прошедших с 1 января 1970 г. (от начала эпохи Unix). Метки времени используются только для сравнения различных дат.
// 11 июня 2019 8:00 (по моему местному времени в Сингапуре) new Date(1560211200000)
Без аргументов
Если использовать конструктор объекта Date() без аргументов, то он возвращает дату по местному времени.
new Date()
Форматирование даты
Объект Date предоставляет семь методов форматирования. Каждый из этих семи методов возвращает определенное значение (и все они совершенно бесполезны).
const date = new Date(2019, 0, 23, 17, 23, 42)
- toString выдаст Wed Jan 23 2019 17:23:42 GMT+0800 (Singapore Standard Time)
- toDateString выдаст Wed Jan 23 2019
- toLocaleString выдаст 23/01/2019, 17:23:42
- toLocaleDateString выдаст 23/01/2019
- toGMTString выдаст Wed, 23 Jan 2019 09:23:42 GMT
- toUTCString выдаст Wed, 23 Jan 2019 09:23:42 GMT
- toISOString выдаст 2019-01-23T09:23:42.079Z
Если вам нужен собственный формат, то придётся создать его самостоятельно.
Создаем собственный формат даты JS
Чтобы получить дату в формате Четверг, 23 января 2019 , нужно применять методы объекта Date:
- getFullYear : возвращает четырехзначный год по местному времени.
- getMonth : возвращает месяц года (0-11) по местному времени.
- getDate : возвращает день месяца (1-31) по местному времени.
- getDay : возвращает день недели (0-6) по местному времени. Неделя начинается с воскресенья (0) и заканчивается субботой (6).
Чтобы получить Четверг, 23 января 2019 , нужно использовать методы getFullYear и getDate :
const d = new Date(2019, 0, 23) const year = d.getFullYear() // 2019 const date = d.getDate() // 23
Труднее вывести строки Четверг и января . Чтобы получить название месяца, нужно создать объект, который содержит значение всех двенадцати месяцев.
const months =
Поскольку год начинается с нулевого месяца, то можно использовать массив вместо объекта.
const months = [ 'января', 'февраля', 'марта', 'апреля', 'мая', 'июня', 'июля', 'августа', 'сентября', 'октября', 'ноября', 'декабря' ]
Чтобы получить названием месяца:
- Нужно использовать getMonth , чтобы получить индекс месяца.
- Получить название месяца из months .
const monthIndex = d.getMonth() const monthName = months[monthIndex] console.log(monthName) // января
const monthName = months(d.getMonth()) console.log(monthName) // января
Чтобы вывести день недели, нужен массив со всеми названиями:
const days = [ 'Воскресенье', 'Понедельник', 'Вторник', 'Среда', 'Четверг', 'Пятница', 'Суббота' ]
- Получаем dayIndex с помощью getDay .
- Используем dayIndex , чтобы получить dayName .
const dayIndex = d.getDay() const dayName = days[dayIndex] // Четверг
const dayName = days[d.getDay()] // Четверг
Объединим все переменные, которые создали, чтобы получить отформатированную строку.
const formatted = '$, $ $ $' console.log(formatted) // Четверг, 23 января 2019
Для форматирования времени используйте следующие методы:
- getHours : выдаст часы (0-23) по местному времени.
- getMinutes : выдаст минуты (0-59) по местному времени.
- getSeconds : выдаст секунды (0-59) по местному времени.
- getMilliseconds : выдаст миллисекунды (0-999) по местному времени.
JS сравнение дат
В JavaScript для сравнения дат используются операторы > , < , >= и
const earlier = new Date(2019, 0, 26) const later = new Date(2019, 0, 27) console.log(earlier < later) // true
Сложнее сравнить даты по времени суток (часам и минутам). Вы не сможете сравнить их с помощью == или === :
const a = new Date(2019, 0, 26) const b = new Date(2019, 0, 26) console.log(a == b) // false console.log(a === b) // false
Чтобы проверить, совпадает ли в двух датах значение времени, нужно сравнить их временные метки с помощью getTime .
const isSameTime = (a, b) => < return a.getTime() === b.getTime() >const a = new Date(2019, 0, 26) const b = new Date(2019, 0, 26) console.log(isSameTime(a, b)) // true
Чтобы проверить, совпадают ли в датах дни недели, сравните их значения с помощью методов getFullYear , getMonth и getDate .
const isSameDay = (a, b) => < return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate()=== b.getDate() >const a = new Date(2019, 0, 26, 10) // 26 января 2019, 10:00 const b = new Date(2019, 0, 26, 12) // 26 января 2019, 12:00 console.log(isSameDay(a, b)) // true
Получение даты из другой даты
Чтобы получить дату из другой даты, нужно:
- Установить конкретное значение даты/времени из другой даты.
- Добавить/вычесть отрезок времени из другой даты.
Установка конкретной даты / времени
Для этого можно использовать следующие методы:
- setFullYear : устанавливает четырехзначный год по местному времени.
- setMonth : устанавливает месяц года по местному времени.
- setDate : устанавливает день месяца по местному времени.
- setHours : устанавливает часы по местному времени.
- setMinutes : устанавливает минуты по местному времени.
- setSeconds : устанавливает секунды по местному времени.
- setMilliseconds : устанавливает миллисекунды по местному времени.
Например, если вы хотите задать дату для 15 числа месяца, вы можете использовать метод setDate() .
const d = new Date(2019, 0, 10) d.setDate(15) console.log(d) // 15 января 2019
Чтобы установить июнь месяц, примените метод setMonth :
const d = new Date(2019, 0, 10) d.setMonth(5) console.log(d) // 10 июня 2019
Методы установки значений даты изменяют исходный объект Date(). На практике лучше модифицировать отдельный экземпляр объекта.
const d = new Date(2019, 0, 10) const newDate = new Date(d) newDate.setMonth(5) console.log(d) // 10 января 2019 console.log(newDate) // 10 июня 2019
Добавление/вычитание периода времени из другой даты
Чтобы добавить/вычесть период времени, нужно знать значение текущей даты. Его можно получить с помощью следующих методов:
- getFullYear : возвращает четырехзначный год по местному времени.
- getMonth : возвращает месяц года (0-11) по местному времени.
- getDate : возвращает день месяца (1-31) по местному времени.
- getHours : возвращает часы (0-23) по местному времени.
- getMinutes : возвращает минуты (0-59) по местному времени.
- getSeconds : возвращает секунды (0-59) по местному времени.
- getMilliseconds : возвращает миллисекунды (0-999) по местному времени.
Допустим, что вы хотите назначить свидание через три дня (начиная с сегодняшнего дня). Предположим, что сегодня 28 марта 2019 года.
Первый подход (установка значения)
// Подразумеваем, что сегодня 28 марта 2019 const today = new Date(2019, 2, 28)
Сначала создаем новый объект Date (чтобы не изменять исходный экземпляр объекта):
const finalDate = new Date(today)
С помощью getDate получаем значение, которое хотим изменить:
const currentDate = today.getDate()
Свидание произойдет через три дня. Поэтому добавляем их к текущей дате:
finalDate.setDate(currentDate + 3)
Полный код для первого подхода:
const today = new Date(2019, 2, 28) const finalDate = new Date(today) finalDate.setDate(today.getDate() + 3) console.log(finalDate) // 31 марта 2019
Второй подход (создание новой даты)
Сначала используем getFullYear , getMonth , getDate и другие методы, пока не получим типа значения, которое мы изменить. Затем мы создаём искомую дату при помощи new Date .
const today = new Date(2019, 2, 28) // Получение нужных значений const year = today.getFullYear() const month = today.getMonh() const day = today.getDate() // Создание новой даты const finalDate = new Date(year, month, day + 3) console.log(finalDate) // 31 марта 2019
Оба подхода работают.
Автоматическая коррекция даты
Допустим, мы установили дату на 33 марта 2019 года. (В календаре нет 33 марта). В этом случае JavaScript автоматически переведёт 33 марта во 2 апреля.
// 33е марта => 2е апреля new Date(2019, 2, 33)
33 марта автоматически преобразуется во 2 апреля.
Поэтому не стоит беспокоиться о расчете минут, часов, дней, месяцев при добавлении периода времени. JavaScript делает это автоматически.
// 33е марта => 2е апреля new Date(2019, 2, 30 + 3)
30+3=33. 33 марта автоматически преобразуется во 2 апреля.
И это всё, что вам нужно знать о JavaScript-объекте Date.
Date JS - Дата и время в JavaScript
Для работы с датой и временем в JavaScript существует встроенный объект Date , который содержит методы для создания, хранения, изменения или вывода элементов времени с точностью до миллисекунды. К таким элементам относят: год, месяц, день месяца, неделя, час, минута, секунда, миллисекунда, день недели.
Создать объект Date можно с помощью аргументов:
- количество миллисекунд - new Date(value) ;
- строка - new Date(dateString) ;
- год, месяц, день, часы, минуты, секунды, миллисекунды;
Или пропустить аргументы вовсе.
new Date()
Создадим экземпляр объекта Date без дополнительных аргументов и выведем получившийся результат в console.
let date = new Date(); console.log(date); // Thu Sep 01 2022 06:46:30 GMT+1200 (Фиджи) console.log(date.getFullYear()); // 2022
Получим дату и время согласно часовому поясу, которое установлено на локальном компьютере.
Точно такую же информацию мы можем получить написав Date() без new .
let date = Date(); console.log(date); console.log(date.getFullYear()); // получим ошибку
Однако в этом случае мы получим строку, объект же Date может быть создан только путем вызова функции-конструктора, а следовательно с использованием оператора new . Встроенные методы, для работы с датой в JavaScript, со строкой работать не будут, кроме Date.parse() .
new Date(value)
Создать объект Date , можно передав в качестве аргумента количество миллисекунд.
console.log(new Date(0)); // Thu Jan 01 1970 12:00:00 GMT+1200 (Фиджи) console.log(new Date(818079300000)); // Tue Dec 05 1995 00:15:00 GMT+1200 (Фиджи) console.log(new Date(-268065720000)); // Tue Jul 04 1961 21:18:00 GMT+1200 (Фиджи)
Результат = 1 января 1970 года UTC+0 + количество миллисекунд.
Если указать миллисекунды со знаком минус, отсчет пойдет в обратную сторону. Таким образом все, что со знаком минус будет соответствовать дате до 1 января 1970 года.
getTime()
Количество миллисекунд прошедших с 1 января 1970 года по сегодняшний или заданный момент времени называется timestamp и может быть получено из new Date() с помощью метода getTime() .
date = new Date(2019, 5); alert(date.getTime()); // количество миллисекунд прошедшие с 1 января 1970 года alert(new Date(date.getTime())) // получаем дату обратно
Date.now()
Если необходимо получить количество миллисекунд прошедших с 1 января 1970 года по данный момент правильней будет использовать метод Date.now() .
let date = Date.now(); alert(date);
Запись эквивалента new Date().getTime() , но в отличие от этой конструкции Date.now() не создает промежуточный объект Date , что может быть особенно важно при разработке, где упор идет на быстродействие.
new Date(dateString)
Создать объект Date можно передав в качестве аргумента строку с датой и временем.
date = new Date('2021-09-25T05:27:00'); alert(date); // Sun Sep 25 2022 05:27:00 GMT+1300 (Тонга)
Дата должна быть записана в формате понятном методу Date.parse() , который преобразовывает строку в количество миллисекунд прошедших с 1 января 1970 года UTC+0. Если формат записи будет не верным, метод вернет NaN .
date = new Date('2021-09-25T05:27:00'); alert(Date.parse(date));
new Date(year, month, date, hours, minutes, seconds, millisecond)
new Date(1995, 11, 4, 3, 15, 10, 0); // Mon Dec 04 1995 03:15:10 GMT-0600 (Центральная Америка)
Рассмотрим все возможные аргументы по порядку:
Обязательные аргументы
Год (year) - обязательный аргумент. Обычно записывается полностью - все четыре числа - 2022. Допустима, но не рекомендуется запись от 0 до 99. В этом случае год будет интерпретирован, как 1900 + заданное число.
Месяц (month) - обязательный аргумент и целое число от 0 до 11, где первое это январь, а последнее декабрь.
Необязательные аргументы
День (date) - необязательный аргумент обозначающий день месяца, если не задан, то по умолчанию принимает значение 1. Отсчет начинается с единицы.
Часы (hours) - от 1 до 24
Минуты (minutes) - от 1 до 60
Секунды (seconds) - от 1 до 60
Миллисекунды (millisecond) - от до 1000
Часы, минуты, секунды и миллисекунды - это целые числа, если аргумент не задан, то по умолчанию принимается значение 0.
Если при создании объекта Date в качестве аргумента задано число больше или меньше логического диапазона, программа автоматически переформатирует его в корректное, перенеся значение не соседнее. Если год 2010, а месяц 12 – это будет январь 2011. Если задать 10 часов 61 минуту – это будет 11 часов 1 минута. Если месяц апрель, а день 0 это 31 марта.
Методы для получения элементов даты
getFullYear()
let date = new Date('1996-12-17T05:30:00'); date.getFullYear(); // 1996
Метод позволяет получить год из объекта Date , если аргументов нет вернет текущий.
getMonth()
let date = new Date('1996-12-17T05:30:00'); date.getMonth(); // 11
Метод вернет месяц в формате от 0 до 11, если аргументов нет текущий.
getDate()
let date = new Date('1996-12-17T05:30:00'); date.getDate(); // 17
Метод возвращает день месяца указанного в объекте, если аргументов нет вернет текущую дату по местному времени.
getHours(), getMinutes(), getSeconds(), getMilliseconds()
let date = new Date(1996, 11, 17, 21, 30, 10, 900); date.getHours(); // 21 или 9 часов вечера date.getMinutes(); // 30 минут date.getSeconds(); // 10 секунд date.getMilliseconds(); 900 миллисекунд
Если аргумент отсутствует метод вернёт 0.
getTimezoneOffset()
Метод возвращает разницу в минутах между локальным временем и UTC.
let date = new Date().getTimezoneOffset(); alert(date); // при UTC +3 покажет -180
getDay()
let date = new Date(1996, 11, 17); date.getDay(); // 2
Метод возвращает день недели, отсчет начинается с 0 (воскресенье) и заканчивается 6-ю (суббота). В примере 1996 год 17 декабря и это вторник, следовательно результат 2.
Установка компонентов даты и времени
Для того, чтобы заменить или передать в объект Date отдельные компоненты времени используют следующие методы. В квадратных скобках необязательные элементы, которые при отсутствии игнорируются.
setFullYear(год, [месяц], [день месяца])
setMonth(месяц, [день месяца])
setHours(часы, [минуты], [секунды], [миллисекунды])
setMinutes(минуты, [секунды], [миллисекунды])
setTime() - устанавливает время в Date равным количеству миллисекунд прошедших с 1 января 1970 г. UTC.
При использовании методов результат возвращается в миллисекундах прошедших с 1 января 1970 г. по времени установленном на компьютере.
let date = new Date(2019, 0); // Tue Jan 01 2019 00:00:00 GMT+0300 (Москва) date.setFullYear(2021); // 1609448400000 мс, что равно Fri Jan 01 2021 00:00:00 GMT+0300 (Москва)
В примере мы передали в объект 2021 год, который и заменил 2019-ый.
UTC-варианты методов
Методы получения и передачи элементов для объекта Date работают согласно времени установленном на компьютере. Для того, чтобы в качестве результата получать дату относительно всемирного координированного времени (UTC) используют похожие методы, отличающиеся только вставкой UTC.
Получение элементов даты согласно UTC:
getUTCFullYear() , getUTCMonth() , getUTCDate() , getUTCHours() , getUTCMinutes() , getUTCSeconds() , getUTCMilliseconds() , getUTCDay()
Установка компонентов даты и времени согласно UTC:
setUTCFullYear() , setUTCMonth() , setUTCDate() , setUTCHours() , setUTCMinutes() , setUTCSeconds() , setUTCMilliseconds()
Преобразование объекта Date к строке
Для того, чтобы получить из Date нужные элементы даты и времени в формате строки используют следующие методы:
toString() - дата и время
toTimeString() - только время
toDateString() - только дата
toUTCString() - дата и время в формате UTC
toISOString() - дата и время в формате ISO
toLocaleTimeString() - только время в локальном формате
toLocaleString() - дата и время в локальном формате
let date = new Date(2018, 4, 19, 2, 34, 10); date.toString(); // Sat May 19 2018 02:34:10 GMT+0300 (Москва) date.toTimeString(); // 02:34:10 GMT+0300 (Москва) date.toDateString(); // Sat May 19 2018 date.toUTCString(); // Fri, 18 May 2018 23:34:10 GMT date.toISOString(); // 2018-05-18T23:34:10.000Z date.toLocaleTimeString(); // 02:34:10 date.toLocaleString(); // 19.05.2018, 02:34:10
Итого
1. Объект Date может быть создан без аргументов или с аргументами. В первом случае получим текущую временную метку, во втором задаем нужный отрезок времени с помощью миллисекунд, строки с датой или аргументов (год, месяц, день, часы, минуты, секунды, миллисекунды).
2. Для получения отдельных элементов Date используют методы - getFullYear() , getMonth() , getDate() , getHours() , getMinutes() , getSeconds() , getMilliseconds() , getDay() .
3. Для того, чтобы установить новые компоненты даты и времени используют: setFullYear() , setMonth() , setDate() , setHours() , setMinutes() , setSeconds() , setMilliseconds() , setTime() .
4. Для получения даты в нужном формате в виде строки используют: toString() , toTimeString() , toDateString() , toUTCString() , toISOString() , toLocaleTimeString() , toLocaleString() .
5. При создании Date в независимости какие аргументы и в каком формате передаются, создается объект со всеми элементами времени.
6. Если передать в Date аргументы времени некорректного формата (целые числа), дата будет корректироваться переносом значения на соседнее.
Skypro - научим с нуля
Дата и время в JavaScript
JavaScript определяет класс Date для представления и оперирования числами с целью отображения даты и времени.
Объект Date создается с помощью конструктора Date() . Этот объект можно использовать, чтобы отображать год, месяц и день на веб-странице в виде таймера.
Результат работы конструктора Date() зависит от переданных ему аргументов.
- Конструктор без аргумента (Date()) выдает текущее время.
- Конструктор с одним аргументом (Date(milliseconds)) интерпретирует этот аргумент как количество миллисекунд, прошедших с 1970 года.
- Конструктор с двумя и более аргументами (Date(year, month, day, hours, minutes, seconds, milliseconds)) интерпретирует эти аргументы как год, месяц, день месяца, час, минуту, секунду и миллисекунду по местному часовому поясу.
В API Date первый месяц года обозначается как 0, а первый день месяца — как 1.
Конструктор Date() интерпретирует аргументы, используя часовой пояс локального компьютера.
На компьютере автора установлено индийское стандартное время, поэтому даты и время в этой статье интерпретируются по индийскому стандартному времени.
Чтобы указать дату и время в определенном часовом поясе, нужно добавить этот часовой пояс.
Пример: добавление часового пояса UTC (универсальное скоординированное по Гринвичу время).
Date.UTC() принимает те же аргументы, что и конструктор Date() , интерпретирует их в UTC и возвращает миллисекундную метку времени, которую можно передать конструктору Date() . По умолчанию результаты будут отображаться в часовом поясе локального компьютера. Чтобы отобразить дату в UTC, необходимо применить toString() , toUTCString() или toISOString() .
Date-методы в JavaScript
Методы get и set используются для запроса и изменения в объекте Date полей year , month , day-of-month , hours , minutes , seconds и milliseconds .
Эти методы применяются двумя способами: по местному времени и по UTC.
- Метод get помогает получить полный год ( FullYear ) в Date-объекте:
- getFullYear() ;
- getUTCFullYear() .
2. Метод set помогает установить полный год ( FullYear ) в Date-объекте:
- setFullYear() ;
- setUTCFullYear() .
Для получения и установки других Date-полей необходимо заменить вышеупомянутые методы get и set ‘FullYear’ на имя конкретного поля (например, getMonth , getUTCMonth , setMonth , setUTCMonth ).
Примечание. Методы для запроса:
- дня месяца — — → getDate() и getUTCDate() ;
- дня недели (от 0 для воскресенья до 6 для субботы) — — → getDay() и getUTCDay() . Дни недели доступны в режиме “только для чтения”, так что не существует метода setDay() .
Временные метки
JavaScript по умолчанию представляет даты как целые числа, которые указывают количество миллисекунд, прошедших с (или до) полуночи 1 января 1970 года по UTC. Это называется временными метками. Статический метод Date.now() возвращает текущее время в виде временной метки.
Форматирование и разбор Date-строк
В классе Date применяются следующие методы форматирования строк.
- toString() — использует местный часовой пояс, но не форматирует дату и время с учетом локали.
- toUTCString() — использует часовой пояс UTC, но не форматирует дату с учетом локали.
- toISOString() — выводит дату и время в стандартном формате “year-month-day hours:minutes:seconds.ms” (по стандарту ISO-8601). Буква “T” отделяет часть вывода даты от части вывода времени. Время выражается в UTC, что обозначается буквой “Z” в качестве последней буквы вывода.
- toLocaleString() — использует местный часовой пояс и формат, соответствующий локали пользователя.
- toDateString() — форматирует только часть даты и опускает время. Этот метод использует локальный часовой пояс и не выполняет форматирование, соответствующее локали.
- toLocaleDateString() — форматирует только дату. Этот метод использует местный часовой пояс и формат даты, соответствующий локали.
- toTimeString() — форматирует только время и опускает дату. Этот метод использует местный часовой пояс, но не форматирует время в соответствии с локалью.
- toLocaleTimeString() — форматирует время с учетом локали и использует местный часовой пояс.
В объекте Date существует статический метод parse() , который принимает в качестве аргумента строковое представление даты и возвращает временную метку, представляющую дату с 1 января 1970 года 00:00:00 UTC или NaN, если строка не распознана или не имеет подходящих значений даты.
- 7 полезных репозиториев GitHub для JS-программистов
- Как найти три наибольших числа в JavaScript
- Алгоритм JavaScript: Array.forEach()
Читайте нас в Telegram, VK и Дзен
