Moment js bekommen ersten und letzten Tag des aktuellen Monats

136

Wie erhalte ich den ersten und letzten Tag und die letzte Uhrzeit des aktuellen Monats im folgenden Format in moment.js:

2016-09-01 00:00

Ich kann das aktuelle Datum und die aktuelle Uhrzeit wie moment().format('YYYY-MM-DD h:m')folgt abrufen : Diese werden im obigen Format ausgegeben.

Wie auch immer, ich muss das Datum und die Uhrzeit des ersten und letzten Tages des aktuellen Monats abrufen.

BEARBEITEN: Meine Frage unterscheidet sich von dieser , da hier nach einem bestimmten Monat gefragt wird, den der Benutzer bereits hat, während ich nach dem aktuellen Monat und nach einem bestimmten Format des Datums frage, das im anderen so genannten "Duplikat" nicht erwähnt wird '.

user3574492
quelle
2
Mögliches Duplikat von Moment JS Anfang und Ende eines bestimmten Monats
Audite Marlow
1
Moment.js unterstützen die Funktion zum Abrufen des ersten und letzten Tages des Monats. Sie können diese Funktion für den aktuellen Monat abrufen, indem Sie: moment (). StartOf ('month') und moment (). EndOf ('month') abrufen. Ich denke, Sie sollten die Antwort von diesem sehen
Tan Le
@ TanLe Ja, aber dies gibt im folgenden Format aus: Thu Sep 01 2016 00:00:00 GMT+0100 (GMT Summer Time)Ich möchte das Format, wie ich es in meiner Frage erwähnt habe
user3574492
Diese Funktion gibt das Moment-Objekt für den Tag zurück, sodass Sie das Format verwenden können, um mit jedem gewünschten Format auszugeben. Wie: moment (). StartOf ('Monat'). Format ('JJJJ-MM-TT HH: mm').
Tan Le
@AuditeMarlow Netter Versuch, aber die Fragen sind etwas anders, wie in meiner Bearbeitung erklärt.
user3574492

Antworten:

370

Falls jemand die Kommentare zur ursprünglichen Frage verpasst hat, können Sie integrierte Methoden verwenden (funktioniert ab 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
quelle
1
Ich weiß nicht, warum jemand die ursprünglichen Kommentare gelöscht hat, aber der Grund, warum dies nicht die akzeptierte Antwort war, war, dass sie viele Monate nach der akzeptierten Antwort veröffentlicht wurde.
user3574492
2
danke @ user3574492 keine große Sache, danke für die Klarstellung - wenn Sie denken, dass diese Antwort die beste ist, dann denke ich, dass es möglich ist, sie in die akzeptierte Antwort zu ändern, auch wenn sie später veröffentlicht wurde.
Ali Yazdani
3
moment(1, "DD");wird am ersten Tag des laufenden Monats zurückkehren
Anil Vangari
35

Es gibt einen anderen Weg, dies zu tun:

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

Sie können dies ohne moment.js tun

Eine Möglichkeit, dies im nativen Javascript-Code zu tun:

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
quelle
Dies gibt im Standard-Datumsformat aus, Thu Sep 01 2016 00:00:00 GMT+0100 (GMT Summer Time)nicht in dem Format, das ich möchte:2016-09-01 00:00
user3574492
1
Verwenden Sie moment, um das Datum zu formatieren ... firstDay = moment (firstDay) .format ('MM / TT / JJJJ'); lastDay = moment (lastDay) .format ('MM / TT / JJJJ');
Kevin Grosgojat
1
und wie man startdateund enddatedes nächsten Monats mit dieser Formel?
Alka Vaghela
28
"Sie können dies ohne moment.js tun" verwendet moment.js, um das Datum zu formatieren ...
SteamFire
10

Angenommen, Sie verwenden eine Datumsbereichsauswahl, um die Daten abzurufen. Sie könnten so etwas tun, um das zu bekommen, was Sie wollen.

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

Moment startOf () und endOf () ist die Antwort, nach der Sie suchen. Zum Beispiel: -

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

Erstes und letztes Datum des aktuellen Monats Im 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
quelle
1

So einfach können wir daysInMonth () und endOf () verwenden.

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