Библиотека moment.js. Работа с форматами
![Библиотека moment.js. Работа с форматами](/images/articles/js_moment.jpg)
Как вы поняли из прошлой статьи про диапазоны дат, что в нативном JavaScript неудобно работать с форматами дат. Поэтому и была разработана библиотека moment.js. Данная библиотека предлагает очень удобную работу с различными форматами дат в отличии от стандартного подхода в JavaScript.
Установка библиотеки moment.js
Для тех, кто ещё не знает, как пользоваться различными пакетными менеджерами, можно библиотеку скачать с официального сайта, как обычный zip-архив. Для более продвинутых пользователей, предлагается инсталляция библиотеки путем ввода команды через терминал редактора кода. Мы рассмотрим установку на связке Visual Code + пакетный менеджер npm. Откройте вкладку Terminal в вашем проекте и введите команду.
npm install moment --save
Подключение библиотеки moment.js
Пакетный менеджер npm сам скачает и распакует библиотеку moment.js в ваш проект, в результате у вас появится папка node_modules, внутри которой лежит папка moment. Находим там файл moment.min.js и правильно прописываем путь до этого файла.
<script src="node_modules/moment/min/moment.min.js"></script>
Работа с библиотекой
Чтобы просто вызвать библиотеку moment.js достаточно в js файле прописать следующий код.
console.log(moment());
В консоли мы видим нечто странное, пугаться этого не нужно, так и должно быть.
![Библиотека moment.js. Работа с форматами.](/images/articles/js_moment_01.jpg)
Данная конструкция возвращает нам текущую дату в более читаемом виде.
console.log(moment().format()); // 2020-11-12T14:14:07+02:00
В разделе документации можно найти массу примеров, как выводить дату в нужном вам формате. Для этого в функцию format() передадим строку, которая может быть сформирована из огромного числа параметров, на ваш выбор. Например, мы хотим вывести дату в привычном для нас виде: 12.11.2020. Все данные содержаться в документации:
- YYYY - год
- MM - месяц
- DD -день
console.log(moment().format('DD.MM.YYYY'));
![Библиотека moment.js. Работа с форматами.](/images/articles/js_moment_02.jpg)
В консоли вывелась дата, которую мы и хотели получить. Если вместо точек в качестве разделителей использовать косые линии, то мы получим дату в таком формате.
console.log(moment().format('DD/MM/YYYY')); // 12/11/2020
Вполне логично, что библиотека выводит только английские названия месяца.
console.log(moment().format('12 MMM YYYY')); // 12 Nov 2020
Локализация
Для локализации выводимых форматов, нужно подключить другой js файл. Это значит, что данная библиотека будет включать в себя большее количество локализаций (разные языки).
<script src="node_modules/moment/min/moment-with-locales.min.js"></script>
Указав нужный язык, библиотека выдаст дату уже на местном языке.
moment.locale('ru')
console.log(moment().format('12 MMM YYYY')); // 12 нояб. 2020
Вывод заданной даты
Помимо получения текущей даты, мы можем сами задавать нужную для вывода дату. Сначала передадим в функцию moment() желаемую дату и зададим нужный формат для вывода.
moment.locale('ru')
console.log(moment('25/12/2021', 'DD.MM.YYYY').format('25 MMM YYYY')); // 25 дек. 2021
Так же есть возможность задавать определенную дату через объект Date. При задании месяца нужно учитывать, что в программировании отсчет ведется с нуля. Поэтому, если нам надо вывести декабрь, то мы указываем число 11, мысленно прибавляя единицу.
let date = {
years: 2000,
months: 11,
days: 25
};
console.log(moment(date).format('DD.MM.YYYY')); // 25.12.2000
Манипуляции с датами
Мы передаем в функцию get() какой-нибудь ключ и получаем в консоли его текущее значение.
let format = 'DD.MM.YYYY';
console.log(moment().get('year')); // 2020
В функции set() можно устанавливать и выводить собственное значение.
let format = 'DD.MM.YYYY';
console.log(moment().set('M','5').set('date','10').format(format)); // 10.06.2020
Функция add() прибавляет заданное число к текущей дате. Функция subtract() действует противоположным образом, вычитает переданные числа из текущей даты.
let format = 'DD.MM.YYYY';
let m = moment();
console.log(m.add({
d: 3,
M: 1,
y: 1
}).format(format)); // 16.12.21
-
-
Михаил Русаков
Комментарии (0):
Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.