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 ».


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

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

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

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')}

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

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

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')
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.