2017-07-03 22 views
1

月の最終日を取得するために年、月、日を文字列としてmoment.jsの日付コンストラクタに渡すと、 "無効な日付" 3月と8月のために:私は月パラメータの整数を指定するときmoment.jsは3月と8月の最終日に無効な日付を返します

moment(["2022","0","31"]).toISOString() 
"2022-01-31T06:00:00.000Z" 
moment(["2022","1","28"]).toISOString() 
"2022-02-28T06:00:00.000Z" 

//March 
moment(["2022","2","31"]).toISOString() 
"Invalid date" 

moment(["2022","3","30"]).toISOString() 
"2022-04-30T05:00:00.000Z" 
moment(["2022","4","31"]).toISOString() 
"2022-05-31T05:00:00.000Z" 
moment(["2022","5","30"]).toISOString() 
"2022-06-30T05:00:00.000Z" 
moment(["2022","6","31"]).toISOString() 
"2022-07-31T05:00:00.000Z" 

//August 
moment(["2022","7","31"]).toISOString() 
"Invalid date" 

moment(["2022","8","30"]).toISOString() 
"2022-09-30T05:00:00.000Z" 
moment(["2022","9","31"]).toISOString() 
"2022-10-31T05:00:00.000Z" 
moment(["2022","10","30"]).toISOString() 
"2022-11-30T06:00:00.000Z" 
moment(["2022","11","31"]).toISOString() 
"2022-12-31T06:00:00.000Z" 

はしかし、これらの日付は仕事:私のように月のパラメータを渡すとき、これはなぜ起こるか

//March 
moment(["2022",2,"31"]).toISOString() 
"2022-03-31T05:00:00.000Z" 

//August 
moment(["2022",7,"31"]).toISOString() 
"2022-08-31T05:00:00.000Z" 

私は思ったんだけど文字列対整数?

+2

どのバージョンのmoment.jsを使用していますか? – cochsen

+0

若干古いですが、実現しています... https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.7.0/moment.min.js –

答えて

0

最新のバージョンのmoment.jsにアップグレードしました。

旧破壊例(v2.7.0): https://jsfiddle.net/1Lwauz1t/1/

最新版作業例(v2.18.1): https://jsfiddle.net/dsadkpsa/

ここjsfiddleする上記のリンクで実行されているコードです:

console.log(moment(["2022","2","31"]).toISOString()); 
console.log(moment(["2022",2,"31"]).toISOString()); 
console.log(moment(["2022","7","31"]).toISOString()); 
console.log(moment(["2022",7,"31"]).toISOString()); 

@cochsenに感謝して、正しい方向に微調整します。

関連する問題