moment.js中的isSame()函数或日期验证

use*_*590 44 javascript validation date momentjs

我需要验证用户的日期并检查它是否采用特定格式.如果是,那么它将被接受,否则它将不会.我正在寻找那种

value.match("regular expression") 
Run Code Online (Sandbox Code Playgroud)

以上工作正常,如果我必须选择几种格式.所以,我遇到了这个时刻.有兴趣知道如何使用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
Run Code Online (Sandbox Code Playgroud)

所以,请帮忙.谢谢

sli*_*oad 105

文档 - 是相同的

检查片刻是否与另一个片刻相同.

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

如果要将粒度限制为毫秒以外的单位,请将单位作为第二个参数传递.

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
Run Code Online (Sandbox Code Playgroud)

如果您尝试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
Run Code Online (Sandbox Code Playgroud)

或者通过isSame片刻物体.

var x = moment("28-02-1999","DD-MM-YYYY");
x.isSame( moment("28-02-1999","DD-MM-YYYY") );
Run Code Online (Sandbox Code Playgroud)