Существует два способа решения поставленных задач: простой и сложный. Я отношусь к категории людей, которые предпочитают максимально легкий способ достижения цели. Для меня, как для разработчика, это означает следующее: чем меньше кода, тем проще решение.
Если вы ранее не сталкивались с библиотекой 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()
вы можете быстро и просто добавлять и вычитать время, а также создавать календарные массивы для различных нужд. Попробуйте внедрить эту библиотеку в свои проекты и убедитесь в её удобстве и функциональности.