2016-07-29 18 views
1

moment().format()moment().isValid()ここMoment.js - moment()。format()は無効な日付を作成しますか?

に応じて有効ではありません日付を作成する例です:

> moment("29 juill 2016", "ll", true).isValid() 
true 

場合または:私はそれが動作月に期間を削除する場合は

> moment.version 
"2.14.1" 
> moment.locale() 
"fr" 
> moment().format("ll") 
"29 juill. 2016" 
> moment("29 juill. 2016", "ll", true).isValid() 
false 

厳密な解析(3番目のパラメータを削除)を無効にします。

> moment("29 juill. 2016", "ll").isValid() 
true 

これはなぜですか? moment().format("ll")は厳密な解析で有効な日付を作成しないのはなぜですか?

+0

入れてください "moment.locale( '・デを');" –

+0

月の期間を削除しても、それでもfalseが返されます。 https://jsfiddle.net/f0pa2pb1/ – James

答えて

0

他の誰かが同じ問題に直面した場合にこれに答えます。

これは、カスタム正しく期間と短い月名を解析しませmoment.jsバージョン2.8.1の問題によるものでした。この問題は、それ以降のバージョン2.14.1で解決されています。ここで

2.8.12.14.1

moment.locale("fr", { 
    monthsShort: [ 
    "janv.", 
    "févr.", 
    "mars", 
    "avr.", 
    "Mai", 
    "juin", 
    "juilltest.", 
    "août", 
    "sept.", 
    "oct.", 
    "nov.", 
    "déc." 
    ], 
    monthsParseExact: true, 
    longDateFormat: { 
    LL: "DD MMM YYYY", 
    ll: "DD MMM YYYY" 
    }, 

}); 
console.log(moment.version); 
moment.locale('fr'); 
console.log(moment.locale()); 
var testDate = '29 juilltest. 2016'; // month name with period in it that matches the custom short name given above 
console.log(moment(testDate, "LL", true).isValid()); 
console.log(moment(testDate, "ll", true).isValid()); 
console.log(moment.localeData("fr")); 

に異なる結果を生成する例では、バージョン2.8.1です:https://jsfiddle.net/3do4ubsj/

2.8.1 
fr 
false 
false 

バージョン2.14.1:https://jsfiddle.net/pkhcaqmy/

2.14.1 
fr 
true 
true 

それを固定しているコミット:https://github.com/moment/moment/commit/fc5a352e9ca30e32a96875810604ad981d1442c3

moment.jsレポの関連問題:https://github.com/moment/moment/issues/3126

0

私は"ll"はあなたが瞬間の機能を実行し、タイムスタンプ(.valueOf)が要求されます場合は、あなたが有効なフォーマットを提供する必要がNaN

moment("29 juill 2016", "ll", true).valueOf() 
// NaN 

を取得します、有効な日付フォーマットではありませんので、それはだと思います第二引数には、あなたの日付文字列のために、それはまた"DD MMMM, YYYY"

だろう、私はあなたがjuillにタイプミスがあったと思うが、私はそれがあるべきだと思うjuillet

moment.locale("fr") 
// "fr" 
moment("29 july, 2016", "DD MMMM, YYYY", true).isValid() 
// false 
moment("29 juillet, 2016", "DD MMMM, YYYY", true).isValid() 
// true 
関連する問題