Moment js obtient le premier et le dernier jour du mois en cours

139

Comment obtenir le premier et le dernier jour et l'heure du mois en cours au format suivant dans moment.js:

01/09/2016 00:00

Je peux obtenir la date et l'heure actuelles comme ceci: moment().format('YYYY-MM-DD h:m')qui sortira dans le format ci-dessus.

Cependant, j'ai besoin d'obtenir la date et l'heure du premier et du dernier jour du mois en cours, comment faire cela?

EDIT: Ma question est différente de ce une raison qui demande un mois étant donné que l'utilisateur a déjà alors que je vous demande le courant mois ainsi demander un format spécifique de la date qui ne figure pas dans l'autre soi - disant « double ».

user3574492
la source
2
Copie possible du début et de la fin
Audite Marlow
1
Moment.js prend en charge la fonction pour obtenir le premier et le dernier jour du mois, vous pouvez l'obtenir pour le mois en cours par: moment (). StartOf ('month') et moment (). EndOf ('month'). Je pense que vous devriez voir la réponse de ceci
Tan Le
@TanLe Oui, mais cela sort au format suivant: Thu Sep 01 2016 00:00:00 GMT+0100 (GMT Summer Time)Je veux le format comme je l'ai mentionné dans ma question
user3574492
Cette fonction renvoie l'objet moment pour le jour, vous pouvez donc utiliser le format pour produire le format de votre choix. Comme: moment (). StartOf ('month'). Format ('YYYY-MM-DD HH: mm').
Tan Le
@AuditeMarlow Bien essayé mais les questions sont légèrement différentes comme expliqué dans ma modification.
user3574492

Réponses:

373

Dans le cas où quelqu'un aurait manqué les commentaires sur la question d'origine, vous pouvez utiliser des méthodes intégrées (fonctionne à partir de Moment 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
la source
1
Je ne sais pas pourquoi quelqu'un a supprimé les commentaires originaux, mais la raison pour laquelle ce n'était pas la réponse acceptée était parce qu'elle a été publiée plusieurs mois après la réponse acceptée.
user3574492
2
merci @ user3574492 pas un gros problème, merci pour la clarification - si vous pensez que cette réponse est la meilleure, je pense qu'il est possible de la changer en réponse acceptée, même si elle a été publiée plus tard.
Ali Yazdani
3
moment(1, "DD");reviendra le premier jour du mois en cours
Anil Vangari
35

Il y aurait une autre façon de faire cela:

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

Vous pouvez le faire sans moment.js

Une façon de faire cela en code Javascript natif:

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
la source
Cette sortie dans le format de date par défaut Thu Sep 01 2016 00:00:00 GMT+0100 (GMT Summer Time)pas dans le format que je veux:2016-09-01 00:00
user3574492
1
Utilisez moment pour formater la date ... firstDay = moment (firstDay) .format ('MM / DD / YYYY'); lastDay = moment (lastDay) .format ('MM / JJ / AAAA');
Kevin Grosgojat le
1
et comment obtenir startdateet enddatedu mois prochain en utilisant cette formule?
alka vaghela
28
"Vous pouvez le faire sans moment.js" utilise moment.js pour formater la date ...
SteamFire
10

En supposant que vous utilisez un sélecteur de plage de dates pour récupérer les dates. Vous pouvez faire quelque chose comme pour obtenir ce que vous voulez.

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

moment startOf () et endOf () est la réponse que vous recherchez. Par exemple: -

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
la source
1

Première et dernière date du mois en cours Dans le 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
la source
1

Aussi simple que nous pouvons utiliser daysInMonth () et 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.
la source