187 votes

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

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

2016-09-01 00:00

Je peux obtenir la date et l'heure actuelles comme ceci : moment().format('YYYY-MM-DD h:m') qui donnera le résultat 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, y a-t-il un moyen de le faire ?

EDITAR: Ma question est différente de este parce que cela demande un mois donné que l'utilisateur possède déjà, alors que je demande le actuel mois ainsi que la demande d'un format spécifique de la date qui n'est pas mentionné dans les autres "doubles".

2 votes

1 votes

Moment.js supporte la fonction pour obtenir le premier et le dernier jour du mois, vous pouvez obtenir cela pour le mois en cours par : moment().startOf('month') et moment().endOf('month') . Je pense que vous devriez consulter la réponse de este

0 votes

@TanLe Oui mais cela sort dans le format suivant : Thu Sep 01 2016 00:00:00 GMT+0100 (GMT Summer Time) Je veux le format que j'ai mentionné dans ma question.

497voto

Ali Yazdani Points 21

Au cas où quelqu'un aurait manqué les commentaires sur la question originale, 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 votes

Je ne sais pas pourquoi quelqu'un a supprimé les commentaires originaux, mais la raison pour laquelle cette réponse n'était pas la réponse acceptée était qu'elle avait été postée plusieurs mois après la réponse acceptée.

2 votes

Merci @user3574492 pas un gros problème, merci pour la clarification - si vous pensez que cette réponse est la meilleure, alors je pense qu'il est possible de la changer pour la réponse acceptée, même si elle a été postée plus tard.

4 votes

moment(1, "DD"); retournera le premier jour du mois en cours

44voto

Akoya Points 678

Il y aurait un autre moyen de le faire :

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

29voto

Kevin Grosgojat Points 1044

Vous pouvez le faire sans moment.js

Un moyen de faire cela dans le 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);

0 votes

Cette sortie se fait 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

1 votes

Utiliser moment pour formater la date ... firstDay = moment(firstDay).format('MM/JJ/AAAA') ; lastDay = moment(lastDay).format('MM/JJ/AAAA') ;

1 votes

Et comment obtenir startdate y enddate du mois prochain en utilisant cette formule ?

17voto

SumanP Points 53

Moment startOf() y 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

12voto

En supposant que vous utilisez un sélecteur de plage de dates pour récupérer les dates. Vous pouvez faire quelque chose comme ça 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')}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X