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

141

Как мне получить первый и последний день и время текущего месяца в следующем формате в moment.js:

2016-09-01 00:00

Я могу получить текущую дату и время следующим образом: moment().format('YYYY-MM-DD h:m')которые будут выводиться в указанном выше формате.

Однако мне нужно получить дату и время первого и последнего дня текущего месяца, как это сделать?

РЕДАКТИРОВАТЬ: Мой вопрос отличается от этого, потому что он запрашивает конкретный месяц, который у пользователя уже есть, тогда как я запрашиваю текущий месяц вместе с запросом определенного формата даты, которая не упоминается в другом так называемом дубликате ».

user3574492
источник
2
Возможный дубликат Moment JS в начале и в конце данного месяца
Audite Marlow
1
Moment.js поддерживает функцию получения первого и последнего дня месяца, вы можете получить это для текущего месяца с помощью: moment (). StartOf ('month') и moment (). EndOf ('month'). Думаю, вам стоит посмотреть ответ на это
Тан Ле
@TanLe Да, но это выводит в следующем формате: Thu Sep 01 2016 00:00:00 GMT+0100 (GMT Summer Time)Я хочу формат, который я упомянул в своем вопросе
user3574492 01
Эта функция возвращает объект момента для дня, поэтому вы можете использовать формат для вывода в любом формате, который вам нужен. Например: moment (). StartOf ('month'). Format ('YYYY-MM-DD HH: mm').
Тан Ле
@AuditeMarlow Хорошая попытка, но вопросы немного другие, как описано в моем редактировании.
user3574492 01

Ответы:

375

Если кто-то пропустил комментарии к исходному вопросу, вы можете использовать встроенные методы (работает с момента 1.7):

const startOfMonth = moment().startOf('month').format('YYYY-MM-DD hh:mm');
const endOfMonth   = moment().endOf('month').format('YYYY-MM-DD hh:mm');
Али Яздани
источник
1
Не знаю, почему кто-то удалил исходные комментарии, но причина, по которой это не был принятый ответ, заключалась в том, что он был опубликован через много месяцев после принятого ответа.
user3574492
2
спасибо @ user3574492, ничего страшного, спасибо за разъяснения - если вы считаете, что этот ответ лучший, то я думаю, что можно изменить его на принятый ответ, даже если он был опубликован позже.
Али Яздани
3
moment(1, "DD");вернется первый день текущего месяца
Анил Вангари
35

Есть другой способ сделать это:

var begin = moment().format("YYYY-MM-01");
var end = moment().format("YYYY-MM-") + moment().daysInMonth();
Akoya
источник
27

Вы можете сделать это без moment.js

Способ сделать это в собственном коде Javascript:

var date = new Date(), y = date.getFullYear(), m = date.getMonth();
var firstDay = new Date(y, m, 1);
var lastDay = new Date(y, m + 1, 0);

firstDay = moment(firstDay).format(yourFormat);
lastDay = moment(lastDay).format(yourFormat);
Кевин Гросгожат
источник
Это выводит в формате даты по умолчанию, а Thu Sep 01 2016 00:00:00 GMT+0100 (GMT Summer Time)не в том формате, который я хочу:2016-09-01 00:00
user3574492 01
1
Используйте момент для форматирования даты ... firstDay = moment (firstDay) .format ('MM / DD / YYYY'); lastDay = момент (lastDay) .format ('ММ / ДД / ГГГГ');
Кевин Гросгожат 01
1
а как получить startdateи enddateследующего месяца по этой формуле?
alka vaghela 05
28
«Вы можете сделать это без moment.js» использует moment.js для форматирования даты ...
SteamFire
10

Предполагая, что вы используете Средство выбора диапазона дат для получения дат. Вы можете сделать что-то вроде, чтобы получить то, что хотите.

$('#daterange-btn').daterangepicker({
            ranges: {
                'Today': [moment(), moment()],
                'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
                'Last 7 Days': [moment().subtract(6, 'days'), moment()],
                'Last 30 Days': [moment().subtract(29, 'days'), moment()],
                'This Month': [moment().startOf('month'), moment().endOf('month')],
                'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
            },
            startDate: moment().subtract(29, 'days'),
            endDate: moment()
        }, function (start, end) {
      alert( 'Date is between' + start.format('YYYY-MM-DD h:m') + 'and' + end.format('YYYY-MM-DD h:m')}
Александр Нана Овусу
источник
9

момент startOf () и endOf () - это ответ, который вы ищете .. Например: -

moment().startOf('year');    // set to January 1st, 12:00 am this year
moment().startOf('month');   // set to the first of this month, 12:00 am
moment().startOf('week');    // set to the first day of this week, 12:00 am
moment().startOf('day');     // set to 12:00 am today
ifelse.codes
источник
1

Первая и последняя дата текущего месяца в момент. Js

console.log("current month first date");
    const firstdate = moment().startOf('month').format('DD-MM-YYYY');
console.log(firstdate);

console.log("current month last date");
    const lastdate=moment().endOf('month').format("DD-MM-YYYY"); 
console.log(lastdate); 
Джоджо Джозеф
источник
1

Как просто, мы можем использовать daysInMonth () и endOf ()

const firstDay = moment('2016-09-15 00:00', 'YYYY-MM-DD h:m').startOf('month').format('D')
const lastDay = moment('2016-09-15 00:00', 'YYYY-MM-DD h:m').endOf('month').format('D')
Пн.
источник