Momento js obtém o primeiro e o último dia do mês atual

138

Como obtenho o primeiro e o último dia e hora do mês atual no seguinte formato em moment.js:

2016-09-01 00:00

Posso obter a data e hora atuais como esta: moment().format('YYYY-MM-DD h:m')que serão exibidas no formato acima.

No entanto, preciso obter a data e a hora do primeiro e do último dia do mês atual. Existe alguma maneira de fazer isso?

EDIT: Minha pergunta é diferente desta, porque isso pede um determinado mês que o usuário já possui, enquanto eu estou solicitando o mês atual e solicitando um formato específico da data que não é mencionada na outra chamada 'duplicata '

user3574492
fonte
2
Possível duplicado de JS Momento de início e final de determinado mês
Audite Marlow
1
Moment.js suporta a função para obter o primeiro e o último dia do mês, você pode obtê-lo para o mês atual em: moment (). StartOf ('month') e moment (). EndOf ('month'). Eu acho que você deveria ver a resposta disto
Tan Le
@TanLe Sim, mas isso gera o seguinte formato: Thu Sep 01 2016 00:00:00 GMT+0100 (GMT Summer Time)Eu quero o formato que mencionei na minha pergunta
user3574492 1/16/16
Essa função retorna o objeto moment para day, para que você possa usar o formato para imprimir com qualquer formato que desejar. Como: moment (). StartOf ('mês'). Formato ('AAAA-MM-DD HH: mm').
Tan Le
@AuditeMarlow Boa tentativa, mas as perguntas são um pouco diferentes, conforme explicado na minha edição.
user3574492

Respostas:

371

Caso alguém tenha perdido os comentários sobre a pergunta original, você pode usar métodos internos (funciona a partir do Momento 1.7):

const startOfMonth = moment().startOf('month').format('YYYY-MM-DD hh:mm');
const endOfMonth   = moment().endOf('month').format('YYYY-MM-DD hh:mm');
Ali Yazdani
fonte
1
Não sei por que alguém excluiu os comentários originais, mas o motivo pelo qual essa não foi a resposta aceita foi porque ela foi postada muitos meses após a resposta aceita.
User3574492
2
obrigado @ user3574492 não é grande coisa, obrigado pelo esclarecimento - se você acha que essa resposta é a melhor, acho que é possível alterá-la para a resposta aceita, mesmo que ela tenha sido publicada posteriormente.
Ali Yazdani
3
moment(1, "DD");retornará primeiro dia do mês atual
Anil Vangari
35

Haveria outra maneira de fazer isso:

var begin = moment().format("YYYY-MM-01");
var end = moment().format("YYYY-MM-") + moment().daysInMonth();
Akoya
fonte
27

Você pode fazer isso sem moment.js

Uma maneira de fazer isso no código Javascript nativo:

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);
Kevin Grosgojat
fonte
Este saídas no formato de data padrão Thu Sep 01 2016 00:00:00 GMT+0100 (GMT Summer Time)não no formato que eu quero que ele:2016-09-01 00:00
user3574492
1
Use moment para formatar a data ... firstDay = moment (firstDay) .format ('MM / DD / AAAA'); lastDay = momento (lastDay) .format ('MM / DD / AAAA');
Kevin Grosgojat 01/09/16
1
e como chegar startdatee enddateno próximo mês usando esta fórmula?
Alka vaghela 5/05
28
"Você pode fazer isso sem moment.js" usos moment.js para formatar a data ...
SteamFire
10

Supondo que você esteja usando um Selecionador de período para recuperar as datas. Você pode fazer algo como conseguir o que deseja.

$('#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')}
Alexander Nana Owusu
fonte
9

moment startOf () e endOf () é a resposta que você está procurando. Por exemplo: -

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
fonte
1

Primeira e última data do mês atual In moment.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); 
Jojo Joseph
fonte
1

Como simples, podemos usar daysInMonth () e 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')
Mo.
fonte