web-dev-qa-db-ja.com

moment.jsまたは日付検証のisSame()関数

ユーザーからの日付を検証し、特定の形式であるかどうかを確認する必要があります。はいの場合、それは受け入れられ、そうでない場合は受け入れられません。探している

value.match("regular expression") 

いくつかの形式から選択する必要がある場合、上記は正常に機能します。そのため、このmoment.jsに出会い、isSame()の使用方法を知りたいと思いました。私はそれを実装しようとしましたが、失敗しました。好む :

var x=moment("MM/DD/YYYY") ;
x.isSame("28-02-1999");  // am getting false which is right
var x=moment("28-02-1999","DD-MM-YYYY") ;
x.isSame("28-02-1999");  // am getting false which is wrong

だから、その中で助けてください。ありがとう

39
user3050590

ドキュメント-同じ

ある瞬間が別の瞬間と同じかどうかを確認します。

moment('2010-10-20').isSame('2010-10-20'); // true

粒度をミリ秒以外の単位に制限する場合は、2番目のパラメーターとして単位を渡します。

moment('2010-10-20').isSame('2009-12-31', 'year'); // false
moment('2010-10-20').isSame('2010-01-01', 'year'); // true
moment('2010-10-20').isSame('2010-12-31', 'year'); // true
moment('2010-10-20').isSame('2011-01-01', 'year'); // false

あなたのコード

var x=moment("28-02-1999","DD-MM-YYYY"); // working
x.isSame("28-02-1999"); // comparing x to an unrecognizable string

moment("28-02-1999")を試すと、無効な日付が取得されます。したがって、xを無効な日付文字列と比較するとfalseが返されます。

修正するには、 デフォルトの日付形式 (ISO 8601)を使用します。

var x = moment("28-02-1999","DD-MM-YYYY");
x.isSame("1999-02-28"); // YYYY-MM-DD

または、isSameモーメントオブジェクトを渡します。

var x = moment("28-02-1999","DD-MM-YYYY");
x.isSame( moment("28-02-1999","DD-MM-YYYY") );
99
slicedtoad