Momento js obtener el primer y último día del mes actual

138

¿Cómo obtengo el primer y último día y hora del mes actual en el siguiente formato en moment.js:

2016-09-01 00:00

Puedo obtener la fecha y hora actuales de esta manera: moment().format('YYYY-MM-DD h:m')que saldrá en el formato anterior.

Sin embargo, necesito obtener la fecha y hora del primer y último día del mes actual, ¿alguna forma de hacerlo?

EDITAR: Mi pregunta es diferente de esta porque eso pide un mes dado que el usuario ya tiene, mientras que yo solicito el mes actual junto con un formato específico de la fecha que no se menciona en el otro llamado 'duplicado '.

usuario3574492
fuente
2
Posible duplicado del inicio y final
Audite Marlow
1
Moment.js admite la función para obtener el primer y último día del mes, puede obtenerlo para el mes actual por: moment (). StartOf ('month') y moment (). EndOf ('month'). Creo que deberías ver la respuesta de esto
Tan Le
@TanLe Sí, pero esto sale en el siguiente formato: Thu Sep 01 2016 00:00:00 GMT+0100 (GMT Summer Time)Quiero el formato que he mencionado en mi pregunta
usuario3574492
Esa función devuelve el objeto de momento del día, por lo que puede usar el formato para generar con cualquier formato que desee. Me gusta: moment (). StartOf ('mes'). Format ('AAAA-MM-DD HH: mm').
Tan Le
@AuditeMarlow Buen intento, pero las preguntas son ligeramente diferentes como se explica en mi edición.
user3574492

Respuestas:

372

En caso de que alguien se haya perdido los comentarios sobre la pregunta original, puede usar métodos integrados (funciona a partir del 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
fuente
1
No sé por qué alguien eliminó los comentarios originales, pero la razón por la que esta no fue la respuesta aceptada fue porque se publicó muchos meses después de la respuesta aceptada.
user3574492
2
gracias @ user3574492 no es gran cosa, gracias por la aclaración: si cree que esta respuesta es la mejor, creo que es posible cambiarla a la respuesta aceptada, incluso si se publicó más tarde.
Ali Yazdani
3
moment(1, "DD");regresará el primer día del mes actual
Anil Vangari
35

Habría otra forma de hacer esto:

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

Puedes hacer esto sin momento.js

Una forma de hacer esto en 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
fuente
Esto sale en el formato de fecha predeterminado, Thu Sep 01 2016 00:00:00 GMT+0100 (GMT Summer Time)no en el formato que quiero:2016-09-01 00:00
user3574492
1
Use moment para formatear la fecha ... firstDay = moment (firstDay) .format ('MM / DD / AAAA'); lastDay = moment (lastDay) .format ('MM / DD / AAAA');
Kevin Grosgojat
1
¿Y cómo obtener startdatey enddatedel próximo mes usando esta fórmula?
Alka Vaghela 05 de
28
"Puedes hacer esto sin moment.js" usa moment.js para formatear la fecha ...
SteamFire
10

Suponiendo que está utilizando un selector de rango de fechas para recuperar las fechas. Podrías hacer algo como conseguir lo que quieres.

$('#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
fuente
9

moment startOf () y endOf () es la respuesta que está buscando. Por ejemplo: -

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

Primera y última fecha del mes actual En el momento.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
fuente
1

Tan simple podemos usar daysInMonth () y 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')
Mes.
fuente