首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MomentJS -用于输入验证?

MomentJS -用于输入验证?
EN

Stack Overflow用户
提问于 2012-05-23 08:10:31
回答 2查看 10K关注 0票数 9

MomentJS是用来解析用户输入的吗?

我比较接近简单的情况,让它接受DDMMYYYY顺序中的日期,并处理一些变化。

在指定格式时,它不能很好地处理无效的日期-包括日期值太高,或者在2到4位数字之间切换年期值。

年份解释示例:

代码语言:javascript
复制
var date1 = moment('30082012', 'DDMMYYYY');
var date2 = moment('30082012', 'DDMMYY'); // Gives wrong year - 2020
var date3 = moment('300812', 'DDMMYYYY'); // Gives wrong year - 1900
var date4 = moment('300812', 'DDMMYY');

希望是无效日期的示例:

代码语言:javascript
复制
var date5 = moment('08302012', 'DDMMYYYY'); // Gives Jun 08 2014
var date6 = moment('08302012', 'DDMMYY'); // Gives Jun 08 2022
var date7 = moment('083012', 'DDMMYYYY'); // Gives Jun 08 1902
var date8 = moment('083012', 'DDMMYY'); // Jun 08 2014

我已经用这些例子创建了一个JS Fiddle:http://jsfiddle.net/cHRfg/2/

有没有办法让moment接受更广泛的用户输入,并拒绝无效的日期?或者,这个库不是为此而设计的?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-05-31 12:43:52

您可以尝试解析多种格式。更新的fiddle:http://jsfiddle.net/timrwood/cHRfg/3/

代码语言:javascript
复制
var formats = ['DDMMYYYY', 'DDMMYY'];
var date1 = moment('30082012', formats);
var date4 = moment('300812', formats);

以下是相关文档。http://momentjs.com/docs/#/parsing/string-formats/

有关于添加moment.fn.isValid的开发,它将允许您进行验证,如示例5-8所示。它将在1.7.0版本中添加。https://github.com/timrwood/moment/pull/306

票数 8
EN

Stack Overflow用户

发布于 2014-01-14 23:40:34

代码语言:javascript
复制
var parsed = moment(myStringDate, 'DD.MM.YYYY');

对于>= 1.7.0版,请使用:

代码语言:javascript
复制
parsed.isValid()

对于版本低于1.7.0的版本,创建您自己的isValid()函数:

代码语言:javascript
复制
function isValid(parsed) { 
    return (parsed.format() != 'Invalid date');
}    

查看文档:http://momentjs.com/docs/#/parsing/is-valid/

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10711787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档