Автор оригинала: FreeCodeCamp Community Member.
Добро пожаловать в наше высшее руководство по JavaScript Дата объект и момент .js. Этот учебник научит вам все, что вам нужно знать о работе с датами и временами в ваших проектах.
Как создать дату объекта
Получить текущую дату и время
const now = new Date(); // Mon Aug 10 2019 12:58:21 GMT-0400 (Eastern Daylight Time)
Получите дату и время с отдельными ценностями
const specifiedDate = new Date(2019, 4, 29, 15, 0, 0, 0); // Wed May 29 2019 15:00:00 GMT-0400 (Eastern Daylight Time)
Синтаксис Дата (год, месяц, день, час, минута, вторая, миллисекунда) Отказ
Обратите внимание, что месяцы с нулевым индексированным, начиная с января в 0 и заканчиваясь с декабря в 11.
Получить дату и время от времени
const unixEpoch = new Date(0);
Это представляет время в четверг, 1 января 1970 года (UTC) или время EPOCH UNIX. EPOCH UNIX важен, потому что это какой JavaScript, Python, PHP и другие языки и системы используют внутренне, чтобы рассчитать текущее время.
Новая дата (MS) Возвращает дату эпохи плюс количество миллисекунд, в которых вы проходите. Через день 86 400 000 миллисекунд так:
const dayAfterEpoch = new Date(86400000);
Вернется в пятницу, 2 января 1970 года (UTC).
Получите дату и время от строки
const stringDate = new Date('May 29, 2019 15:00:00');
// Wed May 29 2019 15:00:00 GMT-0400 (Eastern Daylight Time)Узнать дату таким образом, очень гибкий. Все примеры ниже возврата действительны Дата объекты:
new Date('2019-06') // June 1st, 2019 00:00:00
new Date('2019-06-16') // June 16th, 2019
new Date('2019') // January 1st, 2019 00:00:00
new Date('JUNE 16, 2019')
new Date('6/23/2019')Вы также можете использовать Date.carnse () Способ возвращения количества миллисекундов с момента эпохи (1 января 1970):
Date.parse('1970-01-02') // 86400000
Date.parse('6/16/2019') // 1560610800000Установка часового пояса
При прохождении строки даты без настройки часового пояса JavaScript предполагает, что дата/время находятся в UTC, прежде чем преобразовать его в часовой пояс вашего браузера:
const exactBirthdate = new Date('6/13/2018 06:27:00');
console.log(exactBirthdate) // Wed Jun 13 2018 06:27:00 GMT+0900 (Korean Standard Time)Это может привести к ошибкам, где возвращается дата, отключена на многих часах. Чтобы избежать этого, пройдите через часовой пояс вместе со строкой:
const exactBirthdate = new Date('6/13/2018 06:27:00 GMT-1000');
console.log(exactBirthdate) // Thu Jun 14 2018 01:27:00 GMT+0900 (Korean Standard Time)
/*
These formats also work:
new Date('6/13/2018 06:27:00 GMT-10:00');
new Date('6/13/2018 06:27:00 -1000');
new Date('6/13/2018 06:27:00 -10:00');
*/Вы также можете пройти некоторые, но не все, коды часовых поясов:
const exactBirthdate = new Date('6/13/2018 06:27:00 PDT');
console.log(exactBirthdate) // Thu Jun 14 2018 01:27:00 GMT+0900 (Korean Standard Time)Дата объектных методов
Часто вам не понадобится вся дата, но просто часть этого, как день, неделя или месяц. К счастью, есть ряд методов, чтобы сделать только что:
const birthday = new Date('6/13/2018 06:27:39');
birthday.getMonth() // 5 (0 is January)
birthday.getDate() // 13
birthday.getDay() // 3 (0 is Sunday)
birthday.getFullYear() // 2018
birthday.getTime() // 1528838859000 (milliseconds since the Unix Epoch)
birthday.getHours() // 6
birthday.getMinutes() // 27
birthday.getSeconds() // 39
birthday.getTimezoneOffset() // -540 (time zone offset in minutes based on your browser's location)Сделать работу с датами легче с моментом.
Получение дат и времена правы не маленькая задача. Кажется, каждая страна имеет другой способ форматирования дат, а учета разных часовых поясов и летнее время/летнее время занимает, ну, много времени. Вот где moment.js сияет – он делает разбор, форматирование и отображение дат ветерок.
Чтобы начать использовать moment.js, установите его через менеджер пакета, как NPM или добавьте его на свой сайт через CDN. Увидеть Moment.js Документация Больше подробностей.
Получите текущую дату и время с помощью moment.js
const now = moment();
Это возвращает объект с датой и временем на основе местоположения вашего браузера вместе с другой информацией о локали. Это похоже на родной JavaScript’s Новая дата () Отказ
Получите дату и время от временной техники с помощью moment.js
Похоже на Новая дата (MS) , вы можете пройти количество миллисекунд с момента эпохи на момент () :
const dayAfterEpoch = moment(86400000);
Если вы хотите получить дату, используя Timestamp Unix в считанные секунды, вы можете использовать Unix () Метод:
const dayAfterEpoch = moment.unix(86400);
Получите дату и время от строки с помощью moment.js
Разбор даты из строки с помощью moment.js легко, и библиотека принимает строки в формате даты даты ISO 8601 или RFC 2822, а также любую строку, принятую JavaScript Дата объект.
Строки ISO 8601 рекомендуются поскольку он является широко принятым форматом. Вот некоторые примеры:
moment('2019-04-21');
moment('2019-04-21T05:30');
moment('2019-04-21 05:30');
moment('20190421');
moment('20190421T0530');Установка часового пояса с помощью moment.js
До сих пор мы использовали moment.js в Локальный режим , что означает, что любой вход предполагается, что является локальной датой или временем. Это похоже на, как родной JavaScript Дата Работы объекта:
const exactBirthMoment = moment('2018-06-13 06:27:00');
console.log(exactBirthMoment) // Wed Jun 13 2018 06:27:00 GMT+0900 (Korean Standard Time)Однако, чтобы установить часовой пояс, вы должны сначала получить момент объекта в Режим UTC:
const exactBirthMoment = moment.utc('2018-06-13 06:27:00');
console.log(exactBirthMoment) // Wed Jun 13 2018 15:27:00 GMT+0900 (Korean Standard Time)Затем вы можете настроить разницу в зонах времени с UTCOFTSET () Метод:
const exactBirthMoment = moment.utc('2018-06-13 06:27:00').utcOffset('+10:00');
console.log(exactBirthMoment) // Wed Jun 13 2018 06:27:00 GMT+0900 (Korean Standard Time)Вы также можете установить смещение UTC как число или строку:
moment.utc().utcOffset(10) // Number of hours offset
moment.utc().utcOffset(600) // Number of minutes offset
moment.utc().utcOffset('+10:00') // Number of hours offset as a stringЧтобы использовать названные зоны времени ( America/los_angeles ) или коды часовых поясов ( PDT ) с моментами объектами, проверьте Момент времени пояса библиотека.
Формировать дату и время с помощью moment.js
Один из основных сил, которые Moment.js имеет на родном JavaScript Дата Объекты – насколько легко форматировать выходную дату и время. Просто цепь Формат () Метод до мгновенного объекта даты и пропустите его строку формата в качестве параметра:
moment().format('MM-DD-YY'); // "08-13-19"
moment().format('MM-DD-YYYY'); // "08-13-2019"
moment().format('MM/DD/YYYY'); // "08/13/2019"
moment().format('MMM Do, YYYY') // "Aug 13th, 2019"
moment().format('ddd MMMM Do, YYYY HH:mm:ss') // "Tues August 13th, 2019 19:29:20"
moment().format('dddd, MMMM Do, YYYY -- hh:mm:ss A') // "Tuesday, August 13th, 2019 -- 07:31:02 PM"Вот стол с некоторыми обычными токенами форматирования:
| Yyyy. | 2019 | 4-значный год |
| Yy. | 19 | 2-значный год |
| Мммм | август | Название полного месяца |
| М-м-м | Август | Сокращенное имя месяца |
| Мм | 08 | 2-значный месяц |
| M | 8 | 1-значный месяц |
| Дд | 225 | День года |
| Дд | 13 | День месяца |
| Делать | 13-й | День месяца с порядковым |
| DDDD | среда | Имя полного дня |
| дд | Мы б | Сокращенное дневное имя |
| HH. | 17 | Часы в течение 24 часов времени |
| HH. | 05 | Часы за 12 часов времени |
| мм | 32 | Минут |
| SS | 19 | Секунды |
| a | до полудня после полудня | ANTE или POST MERIDIEM |
| A | ДО ПОЛУДНЯ ПОСЛЕ ПОЛУДНЯ | Captized Ante или Post Meridiem |
| ZZ. | +0900 | Смещение часового пояса от UTC |
| X | 1410715640.579 | Munix Timestamp в считанные секунды |
| Хх | 1410715640579 | Timestamp Unix в миллисекундах |
Увидеть Moment.js Документы Для более форматирования токенов.
Работа с JavaScript Дата Объекты и Moment.js не должны быть трудоемкими. Теперь вы должны знать более чем достаточно, чтобы начать с обоих.
Оригинал: “https://www.freecodecamp.org/news/the-ultimate-guide-to-javascript-date-and-moment-js/”