So addieren Sie in moment.js richtig 1 Monat zum aktuellen Datum hinzu
Lesezeit: 3 Minuten
Jack Moscovi
Ich habe in der Dokumentation von moment.js gelesen, dass Sie diesen Code verwenden können, wenn Sie 1 Monat zum aktuellen Datum hinzufügen möchten:
var moment = require('moment');
var futureMonth = moment().add(1, 'M').format('DD-MM-YYYY');
Aber das Problem ist, dass dies nicht die Art und Weise hinzufügt, wie ich es erwarte. Angenommen, das aktuelle Datum ist der 31.10.2015 (der letzte Tag im Monat Oktober). In Code:
var currentDate = moment().format('DD-MM-YYYY');
var futureMonth = moment().add(1, 'M').format('DD-MM-YYYY');
console.log(currentDate) // Result --> 31/10/2015
console.log(futureMonth) // Result --> 30/11/2015
Wenn Sie sich das Kalenderdatum ansehen, sollte 1 Monat/31 Tage ab dem 31.10.2015 der 1.12.2015 (der erste Tag im Dezember) sein, nicht der 30.11.2015 (der letzte Tag im November).
Könnte mir jemand helfen, dieses Problem zu beheben?
Ich schätze, wonach du suchst moment().add(30, "days").
– Vikram Deshmukh
30. Oktober 2015 um 16:39 Uhr
Welche Regel willst du eigentlich? Ist es “Addieren Sie die Anzahl der Tage im laufenden Monat“? Ist es “1 Monat + 1 Tag hinzufügen”?
– Jamiec
30. Oktober 2015 um 16:51 Uhr
Es scheint, als ob die Definition in momentjs lautet, dass, wenn Sie ein Monatsende haben und 1 Monat hinzufügen, das Ende des nächsten Monats ausgeführt wird. Was mir sehr vernünftig und vorhersehbar erscheint
– Ki
30. Oktober 2015 um 17:07 Uhr
Ein Monat ist also nicht immer 30 Tage lang moment().add(30, "days") ist technisch nicht die richtige Antwort.
– SSH Dies
31. Januar 2017 um 17:42 Uhr
Bitte nennen Sie nicht richtige Dinge nicht richtig. Ich schlage vor, den Titel der Frage irgendwie zu ändern. Derzeit ist es irreführend.
– alehro
1. Juni 2017 um 15:25 Uhr
stillw
var currentDate = moment('2015-10-30');
var futureMonth = moment(currentDate).add(1, 'M');
var futureMonthEnd = moment(futureMonth).endOf('month');
if(currentDate.date() != futureMonth.date() && futureMonth.isSame(futureMonthEnd.format('YYYY-MM-DD'))) {
futureMonth = futureMonth.add(1, 'd');
}
console.log(currentDate);
console.log(futureMonth);
Diese Antwort ist falsch und fügt einen Monat gemäß der obigen Anfrage nicht korrekt hinzu
– Eike Thies
6. November 2019 um 22:22 Uhr
Versuchen moment('2020-03-30').add(1, 'months') und dann mit vergleichen moment('2020-03-31').add(1, 'months'). Das Ergebnis wird dasselbe sein, was falsch ist.
Während dieser Code die Frage beantworten kann, würde die Bereitstellung von zusätzlichem Kontext dazu, wie und/oder warum er das Problem löst, den langfristigen Wert der Antwort verbessern.
– Piotr Labunski
19. März 2020 um 8:41 Uhr
Da steht, füge 1 Monat hinzu und du fügst 4 Tage hinzu
Ich schätze, wonach du suchst
moment().add(30, "days")
.– Vikram Deshmukh
30. Oktober 2015 um 16:39 Uhr
Welche Regel willst du eigentlich? Ist es “Addieren Sie die Anzahl der Tage im laufenden Monat“? Ist es “1 Monat + 1 Tag hinzufügen”?
– Jamiec
30. Oktober 2015 um 16:51 Uhr
Es scheint, als ob die Definition in momentjs lautet, dass, wenn Sie ein Monatsende haben und 1 Monat hinzufügen, das Ende des nächsten Monats ausgeführt wird. Was mir sehr vernünftig und vorhersehbar erscheint
– Ki
30. Oktober 2015 um 17:07 Uhr
Ein Monat ist also nicht immer 30 Tage lang
moment().add(30, "days")
ist technisch nicht die richtige Antwort.– SSH Dies
31. Januar 2017 um 17:42 Uhr
Bitte nennen Sie nicht richtige Dinge nicht richtig. Ich schlage vor, den Titel der Frage irgendwie zu ändern. Derzeit ist es irreführend.
– alehro
1. Juni 2017 um 15:25 Uhr