В на стоящее время известна масса библиотек для JavaScript таких как Moment.js, Day.js, Luxon и.т.д. Но не смотря на работоспособность выше указанных, здесь речь пойдет только Moment.js и Day.js. В конце этой статьи будет понятно почему выбор пал на эти библиотеки.

Moment.js

Moment.js – эта JavaScript библиотека помогающая взаимодействовать с датой и временем, которая позволяет манипулировать, парсить, отображать и анализировать в JavaScript очень простым способом.  Если кто-то из вас, в своих проектах имел дело с временем и датой, то большинство предложат использовать именно Moment.js, так как эта библиотека является наиболее известной для работы, как для чистого «ванильного» JavaScript, так и для Node.js С момента ее разработки, было больше всего скачиваний с npmjs.com.

Примеры:

import moment from 'moment'

var now = moment();
moment.lang('ru');
now.format('dddd, MMMM DD YYYY, h:mm:ss'); // вторник, ноябрь 15 2011, 3:31:0

var halloween = moment([2011, 9, 31]); // October 31st
moment.lang('ru');
halloween.fromNow(); // 16 дней назад

var now = moment().add('days', 9);
moment.lang('ru');
now.format('dddd, MMMM DD YYYY'); // четверг, ноябрь 24 2011

var now = moment();
moment.lang('ru');
now.format('LLLL'); // вторник, 15 ноябрь 2011 15:27

Интернацианализация

Одна из важных особенностей Moment.js позволяет отображать время и дату, в зависимости от локации. Несмотря на некоторую объемность данной библиотеки, она до сих пор широко используется в современных проектах.

Day.js

Хорошей альтернативой Moment.js на сегодняшний день, является Day.js. По сути это уменьшенная версия и как заявляет Day.js, что тут используется тот же API который уменьшает размер файла на 96%. Когда мини. файл Moment.js весит 67,9 кб. то Day.js всего 2 кб. И при этом также сохраняется «Интернацианализация» поддержка плагинов и прочего. По дефолту Day.js поставляется на английском языке, но в случае необходимости использовать другие «locale» их можно импортировать, как показано на примере.

Примеры:

Использовать localeглобально:

import 'dayjs/locale/pt';

dayjs.locale('pt'); 
dayjs('2018-4-28', { locale: 'pt' });

Использовать locale локально:

import localeDe from 'dayjs/locale/de'; 

dayjs().locale(localeDe).format(); 

Например плагин UTC добавляет метод формата даты по местному времени.

import dayjs from "dayjs";
import utc from "dayjs/plugin/utc";

dayjs.extend(utc);
dayjs.utc().format(); // 2019-09-21T11:31:55Z

Большая часть функционала Day.js основана на плагинах, подгружаемых в зависимости от поставленной задачи. И в силу своей минималистичность он стал на столько популярен среди разработчиков. Хотя обе библиотеки вполне могут быть реализованы в современных проектах.