Использование moment.js для работы с датами

fe675e89 3bff 42d5 8b07 ea3aa4079635 1 HTML

Существует два способа решения поставленных задач: простой и сложный. Я отношусь к категории людей, которые предпочитают максимально легкий способ достижения цели. Для меня, как для разработчика, это означает следующее: чем меньше кода, тем проще решение.

Если вы ранее не сталкивались с библиотекой moment.js, уделите немного времени изучению документации на официальном сайте. В случае, если у вас возникнет желание попрактиковаться, установите или импортируйте эту библиотеку в свое рабочее пространство.

Сегодня мы познакомимся с двумя весьма полезными функциями moment.js: .add() и .diff().

Функция .add()

Функция .add() позволяет добавлять время к текущей дате. Параметры для этой функции могут иметь одно из трех значений:

moment().add(Number, String);
moment().add(Duration);
moment().add(Object);
  • NUMBER и STRING: Число (number) определяет количество единиц, а строка (string) — их тип.
  • DURATION: Принимает объект (Moment-Duration).
  • OBJECT: Объект в формате {‘unit’: number}. Таким образом можно определить несколько различных единиц.

Примеры использования:

moment().add(7, 'days');
moment().add({ days: 7, months: 1 });
const duration = moment.duration({ 'days': 1 });
moment().add(duration);

Функция .diff()

Функция .diff() позволяет вычислять разницу между двумя датами. Она принимает три параметра, два из которых являются опциональными:

moment().diff(Moment|String|Number|Date|Array);
moment().diff(Moment|String|Number|Date|Array, String);
moment().diff(Moment|String|Number|Date|Array, String, Boolean);
  • ПЕРВЫЙ ПАРАМЕТР: Может быть Moment, String, Number, Date, Array.
  • ВТОРОЙ ПАРАМЕТР: Строковое значение, необходимое для сравнения.
  • ТРЕТИЙ ПАРАМЕТР: Указывается, если для возвращаемого значения необходимо использовать плавающую запятую (в противном случае происходит округление до ближайшего целого числа).

Примеры использования:

const a = moment().add(2, 'year');
const b = moment();
console.log(a.diff(b, 'years')); // возвращает 2

const c = moment();
const d = moment().add(1, 'seconds');
console.log(c.diff(d)); // -1000
console.log(d.diff(c)); // 1000

Создание календарных массивов

Массив лет

const YEARS = () => {
const years = [];
const dateStart = moment();
const dateEnd = moment().add(10, 'years');

while (dateEnd.diff(dateStart, 'years') >= 0) {
years.push(dateStart.format('YYYY'));
dateStart.add(1, 'year');
}
return years;
};

console.log(YEARS());

Массив месяцев

const MONTHS = () => {
const months = [];
const dateStart = moment();
const dateEnd = moment().add(12, 'months');

while (dateEnd.diff(dateStart, 'months') >= 0) {
months.push(dateStart.format('M'));
dateStart.add(1, 'month');
}
return months;
};

console.log(MONTHS());

Массив дней

const DAYS = () => {
const days = [];
const dateStart = moment();
const dateEnd = moment().add(30, 'days');

while (dateEnd.diff(dateStart, 'days') >= 0) {
days.push(dateStart.format('D'));
dateStart.add(1, 'day');
}
return days;
};

console.log(DAYS());

Заключение

Использование библиотеки moment.js позволяет легко и эффективно работать с датами в JavaScript. С помощью функций .add() и .diff() вы можете быстро и просто добавлять и вычитать время, а также создавать календарные массивы для различных нужд. Попробуйте внедрить эту библиотеку в свои проекты и убедитесь в её удобстве и функциональности.

Оцените статью