Как получить последний день месяца переданной даты js
Перейти к содержимому

Как получить последний день месяца переданной даты js

  • автор:

Как получить последний день месяца переданной даты js

Напишите функцию getLastDayOfMonth(year, month) , возвращающую последнее число месяца. Иногда это 30, 31 или даже февральские 28/29.

  • year – год из четырёх цифр, например, 2012.
  • month – месяц от 0 до 11.

К примеру, getLastDayOfMonth(2012, 1) = 29 (високосный год, февраль).

Создадим дату из следующего месяца, но в день передадим 0:

function getLastDayOfMonth(year, month) < let date = new Date(year, month + 1, 0); return date.getDate(); >alert( getLastDayOfMonth(2012, 0) ); // 31 alert( getLastDayOfMonth(2012, 1) ); // 29 alert( getLastDayOfMonth(2013, 1) ); // 28

Обычно даты начинаются с 1, но технически возможно передать любое число, и дата сама себя поправит. Так что если передать 0, то это значение будет соответствовать «один день перед первым числом месяца», другими словами: «последнее число прошлого месяца».

Как вывести последний день месяца и сам месяц текстом?

Как с помощью jquery вывести последний день месяца, и сам месяц? Например: сейчас 23.02.2021 — выводим 28 февраля; сейчас 10.03.2021 — выводим 31 марта.

Отслеживать
задан 23 фев 2021 в 8:11
Frontender Frontender
2,615 23 23 золотых знака 70 70 серебряных знаков 122 122 бронзовых знака

2 ответа 2

Сортировка: Сброс на вариант по умолчанию

let date = new Date(); let firstDay = new Date(date.getFullYear(), date.getMonth(), 1); let lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0); console.log(firstDay.getDate(), lastDay.getDate()); //----------------------------------------------------// let month = 1; // Февраль let year = 2020; date = new Date(year, month + 1, 0); firstDay = new Date(date.getFullYear(), date.getMonth(), 1); lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0); console.log(firstDay.getDate(), lastDay.getDate()); /* сейчас 23.02.2021 - выводим 28 февраля; сейчас 10.03.2021 - выводим 31 марта.*/ date = new Date(2021, 1, 23); lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0); console.log(lastDay.getDate()); date = new Date(2021, 2, 10); lastDay = new Date(date.getFullYear(), date.getMonth() + 1, 0); console.log(lastDay.getDate());

По поводу названия месяца, есть ответ: https://ru.stackoverflow.com/a/721536/191482

Отслеживать
ответ дан 23 фев 2021 в 9:25
Алексей Шиманский Алексей Шиманский
73.5k 12 12 золотых знаков 93 93 серебряных знака 182 182 бронзовых знака

С jQuery не знаю с moment можно примерно так:

const d1 = moment("23.02.2021", "DDMMYYYY") .endOf("month") .toDate() .toLocaleDateString("ru", < day: "numeric", month: "long" >); const d2 = moment("10.03.2021", "DDMMYYYY") .endOf("month") .toDate() .toLocaleDateString("ru", < day: "numeric", month: "long" >); console.log("d1", d1); console.log("d2", d2);

Отслеживать
ответ дан 23 фев 2021 в 9:26
Konstantin Modin Konstantin Modin
1,984 1 1 золотой знак 5 5 серебряных знаков 10 10 бронзовых знаков

  • javascript
  • jquery
    Важное на Мете
Связанные
Похожие

Подписаться на ленту

Лента вопроса

Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.

Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.4.30.8412

Момент 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 .

Полезные материалы

  1. Moment.js | Документация — полнейшая документация по Moment.js.
  2. Получить первую и последнюю дату текущего месяца в JavaScript или jQuery – Stack Overflow — обсуждение особенностей работы с датами в JavaScript.
  3. Date – JavaScript | MDN — подробное руководство по использованию Date в JavaScript.
  4. Шпаргалка по Moment.js — удобная шпаргалка по Moment.js.
  5. GitHub – moment/moment: Parse, validate, manipulate, and display dates in javascript. — репозиторий Moment.js с информацией о внесении изменений и отслеживании ошибок.
  6. momentjs.com — пошаговое руководство по работе с Moment.js.
  7. Moment.js | Документация — информация о предстоящих изменениях в Moment.js.

Работа с Date.setFullYear в JS: последний день месяца

Вы можете определить последний день месяца в JavaScript с помощью следующего кода:

Скопировать код

const lastDay = new Date(year, month + 1, 0).getDate();

Не забудьте, что year должен быть полным, например, 2023, а month представляет собой индекс месяца, где 0 соответствует январю, а 11 – декабрю. В благодарность мощности JavaScript, вам не требуется заботиться о високосных годах: они уже учтены автоматически.

Разбираемся с логикой работы

Конструкция new Date(year, month + 1, 0) выглядит немного загадочно, но на самом деле весьма логична. Введение дня как 0 говорит JavaScript отступить на один день назад, тем самым обнаружив последний день предыдущего месяца. Этот подход стандартизован и работает стабильно в различных браузерах.

Тестирование на совместимость с браузерами

Рекомендуется проверить данный метод в различных браузерах, чтобы убедиться в его безошибочной работе. Несмотря на стандартизацию в рамках спецификации ECMAScript, практическая проверка всегда чрезвычайно полезна.

Для мастеров оптимизации

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

Визуализация

Процесс определения последнего дня месяца можно визуализировать так:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *