2015-10-30 5 views
6

las ich die Dokumentation von moment.js, dass, wenn Sie möchten, 1 Monat ab der aktuellen Datum Zeit hinzuzufügen Sie diesen Code verwendenWie man richtig hinzufügen 1 Monat ab jetzt zu aktuellem Datum in moment.js

var moment = require('moment'); 
var futureMonth = moment().add(1, 'M').format('DD-MM-YYYY'); 

aber das Problem gerade jetzt, ist es nicht richtig das Datum hinzufügen richtig, zum Beispiel Lassen Sie sagen, das aktuelle Datum 31/10/2015 ist, erklären in Code

var currentDate = moment().format('DD-MM-YYYY'); 
var futureMonth = moment().add(1, 'M').format('DD-MM-YYYY'); 

console.log(currentDate) // Will result --> 31/10/2015 
console.log(futureMonth) // Will result --> 30/11/2015 

, wenn Sie einen Blick auf die aktuelle Kalenderzeit nehmen , 1 Monat von 31/10/2015 soll 1/12/2015 sein

Könnte jemand mir eine Meinung geben, wie man dieses Problem beheben kann.

Danke

+0

Ich habe die Idee aus der aktuellen Kalenderzeit, wenn Sie das wünschen. –

+1

Ich denke, was du suchst, ist 'moment(). Add (30," days ")'. –

+0

@Gesper Ich dachte Moment.js definieren den Monat selbst, ohne dass ich es definieren muss. –

Antwort

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

DEMO

EDIT

moment.addRealMonth = function addRealMonth(d) { 
    var fm = moment(d).add(1, 'M'); 
    var fmEnd = moment(fm).endOf('month'); 
    return d.date() != fm.date() && fm.isSame(fmEnd.format('YYYY-MM-DD')) ? fm.add(1, 'd') : fm; 
} 

var nextMonth = moment.addRealMonth(moment()); 

DEMO

+0

Nur wundernd ist dieser Code flexibel? oder einfach das aktuelle Datum Problem 31.10.2015 - 1/12/2015 beheben? –

+0

Das geht einfach anders - Juli und August haben beide 31 Tage. Wenn Sie einen Monat zum 31. Juli hinzufügen, erhalten Sie den 1. September. – Jamiec

+0

Mit der aktualisierten Antwort ist der Code flexibel. – silentw

Verwandte Themen