Момент js: получение первого и последнего дня месяца
Пройдите тест, узнайте какой профессии подходите
Быстрый ответ
Для определения границ текущего месяца с использованием Moment.js, применяйте следующий код:
let firstDay = moment().startOf('month').format('YYYY-MM-DD'); // Отмечаем начало месяца!
let lastDay = moment().endOf('month').format('YYYY-MM-DD'); // Установим конец месяца!
Методы startOf('month')
и endOf('month')
позволяют корректно определить даты первого и последнего дней месяца.
Комфортная работа с часовыми поясами
К библиотеке Moment.js можно легко применить часовые поясы. В случае с UTC, используйте:
let firstDayUtc = moment.utc().startOf('month').format('YYYY-MM-DD'); // UTC полночь, начало месяца!
let lastDayUtc = moment.utc().endOf('month').format('YYYY-MM-DD'); // UTC полночь, конец месяца!
Использование функции .utc()
позволяет трансформировать локальное время в UTC, устраняя проблемы с часовыми поясами.
Возвращение к корням: применение нативного JavaScript
Если у вас нет необходимости в использовании Moment.js, вы можете также воспользоваться нативным JavaScript:
let date = new Date(), y = date.getFullYear(), m = date.getMonth();
let firstDay = new Date(y, m, 1).toISOString().slice(0, 10); // Стартуем месяц с чистого листа!
let lastDay = new Date(y, m + 1, 0).toISOString().slice(0, 10); // Аккуратно завершаем его!
Данный способ преобразует объекты Date
в желаемый формат YYYY-MM-DD
.
Тонкая настройка и форматирование
Библиотека Moment.js прекрасно подсказывает как работать с различными форматами дат:
let firstDayWithTime = moment().startOf('month').format('YYYY-MM-DD HH:mm:ss'); // Установим точное время начала месяца!
let lastDayWithTime = moment().endOf('month').format('YYYY-MM-DD HH:mm:ss'); // И аккуратно зафиксируем время его завершения.
Формат HH:mm:ss
добавляет к дате еще и время, что потребуется при необходимости точности до секунды.
Визуализация
Получение данных о первом и последнем дне текущего месяца с помощью Moment.js визуально напоминает работу с календарем:
📅 Текущий месяц: Апрель
Пример работы:
let firstDay = moment().startOf('month'); // 🌅 Отмечаем первый день месяца в календаре.
let lastDay = moment().endOf('month'); // 🌆 И закрываем календарь на последний день месяца.
Вот как это выглядит:
| Месяц | Первый день (🌅) | Последний день (🌆) |
| ---------------- | ---------------- | ------------------- |
| Текущий (Апрель) | 1 апреля | 30 апреля |
Moment.js — незаменимый инструмент для управления временем. 🚀🗓️
Выбор диапазона дат с помощью daterangepicker
Если возникли специфические требования к датам, daterangepicker
облегчит решение вашей задачи:
let dateRangePickerOptions = {
startDate: moment().startOf('month'),
endDate: moment().endOf('month')
};
$('input').daterangepicker(dateRangePickerOptions, function(start, end, label) {
alert('Выбран новый диапазон дат: ' + start.format('YYYY-MM-DD') + ' – ' + end.format('YYYY-MM-DD'));
});
daterangepicker
предлагает начало и конец месяца как предустановленный диапазон дат, расширяя возможности для настройки UI.
Манипуляции с датами на примере Moment.js
Благодаря Moment.js манипулировать датами становится гораздо проще благодаря таким методам как add()
и subtract()
. Получим первый и последний дни предыдущей недели:
let lastWeekFirstDay = moment().subtract(1, 'weeks').startOf('week').format('YYYY-MM-DD'); // Возвращаемся к началу прошлой недели!
let lastWeekLastDay = moment().subtract(1, 'weeks').endOf('week').format('YYYY-MM-DD'); // И отмечаем её завершение.
Защита вашего проекта от устаревших функций
Несмотря на все достоинства Moment.js, важно быть в курсе устаревших функций. Ознакомьтесь с официальной документацией. При необходимости экономии пространства рассмотрите более легковесные альтернативы, к примеру, date-fns
или Day.js
.
Полезные материалы
- Moment.js | Документация — полнейшая документация по Moment.js.
- Получить первую и последнюю дату текущего месяца в JavaScript или jQuery – Stack Overflow — обсуждение особенностей работы с датами в JavaScript.
- Date – JavaScript | MDN — подробное руководство по использованию
Date
в JavaScript. - Шпаргалка по Moment.js — удобная шпаргалка по Moment.js.
- GitHub – moment/moment: Parse, validate, manipulate, and display dates in javascript. — репозиторий Moment.js с информацией о внесении изменений и отслеживании ошибок.
- momentjs.com — пошаговое руководство по работе с Moment.js.
- Moment.js | Документация — информация о предстоящих изменениях в Moment.js.