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


141

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

2016-09-01 00:00

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

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

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



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();

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

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')
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.