Ove*_*lew 8 parsing date momentjs
MomentJS是否用于用户输入解析?
我已经适应了简单的案例,让它接受DDMMYYYY订单中的日期,并处理一些变化.
在指定格式时,它无法特别好地处理无效日期 - 包括将日值设置得过高,或将年份值切换为2到4位之间.
年份解释的例子:
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');
Run Code Online (Sandbox Code Playgroud)
希望无效日期的例子:
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
Run Code Online (Sandbox Code Playgroud)
我用这些例子创建了一个JS小提琴:http://jsfiddle.net/cHRfg/2/
有没有办法让时刻接受更广泛的用户输入,并拒绝无效日期?或者图书馆不是为此而设的?
您可以尝试解析多种格式.更新小提琴:http://jsfiddle.net/timrwood/cHRfg/3/
var formats = ['DDMMYYYY', 'DDMMYY'];
var date1 = moment('30082012', formats);
var date4 = moment('300812', formats);
Run Code Online (Sandbox Code Playgroud)
以下是相关文档.http://momentjs.com/docs/#/parsing/string-formats/
有添加的开发,moment.fn.isValid
它允许你像例子5-8那样进行验证.它将在1.7.0版本中添加.https://github.com/timrwood/moment/pull/306
var parsed = moment(myStringDate, 'DD.MM.YYYY');
Run Code Online (Sandbox Code Playgroud)
对于版本> = 1.7.0,请使用:
parsed.isValid()
Run Code Online (Sandbox Code Playgroud)
对于版本<1.7.0,创建您自己的isValid()函数:
function isValid(parsed) {
return (parsed.format() != 'Invalid date');
}
Run Code Online (Sandbox Code Playgroud)
签出文档:http : //momentjs.com/docs/#/parsing/is-valid/