1

I need the date of last September with moment.js - but dynamically.

Current Date

currentDate:string = moment().format('YYYY-MM'); // This will be 2017-10

How to know when the last september was from the current date? I need somethink like this:

lastSteptember = moment(this.currentDate).getDateOfLast('september').format('YYYY-MM');

So the result from now would be:

2017-09

But 3 months ago the result would have been another:

2016-09

How do I can handle this with moment.js?

4

4 に答える 4

1

瞬間的に機能させる方法がわかりません。しかし、私の関数を使用して、先月を月番号で取得できます。

var getLastMonth = function(month){
        if(month<1 || month>12) return undefined;
        let year = (month<=moment().month())? (moment().year()) : (moment().year()-1);
        return moment(month + "-" + year, "MM-YYYY");
}

これを使って:

getLastMonth(11); //return 11-2016

getLastMonth(10); //return 10-2017

getLastMonth(9); //return 09-2017
于 2017-10-27T09:07:18.537 に答える
0

以下を試すことができます:

Object.getPrototypeOf(moment()).getLast = function(month,format="YYYY-MM"){
 var date;
 if(this.diff("01 "+month+" "+this.year()) >= 0 || this.format("MMMM").toLowerCase() === month.toLowerCase)
    date = moment(this).month(month);
  else
    date = moment(this).month(month).subtract(1,"years");
 return date.format(format);
});

上記の JavaScript では、現在の瞬間オブジェクトで月が経過したかどうかを確認します。

これにより、任意の瞬間オブジェクトと任意の月から直接確認できます。例:

var customDate = moment("01 December 2001");
customDate.getLast("September"); //"2001-09"
于 2017-10-27T09:56:46.320 に答える