如何测试字符串是有效的日期还是不使用时间? [英] How to test a string is valid date or not using moment?
问题描述
我想测试输入的日期和时间是否有效。
I would like to test if a date and or time entered is valid.
可以用JavaScript进行日期和时间测试,这似乎是一场噩梦。 (已经花了几个小时)。
Can this be done with moment as date and time testing with javascript seems a nightmare. (have spent hours on this).
测试数据看起来像这样。
Test data looks like this.
无效
Invalid
invalid = ""
invalid = " "
invalid = "x"
invalid = "1/1"
invalid = "30/2/2015"
invalid = "2/30/2015"
有效
isvalid = "1/12/2015"
isvalid = "1/12/2015 1:00 PM";
尝试过各种JavaScript方法,小时试用失败。
Have tried various javascript methods with hours of trials failing.
我以为时候会有这样的东西。所以尝试以下,所有这些都不起作用,因为我没有想法的时候这样做。
I thought moment would have something for this. So tried the following, all of which does not work because I do no think moment works like this.
var valid = moment(input).isDate()
var valid = moment().isDate(input)
我的时间格式是dd / mm / yyyy
My time format is "dd/mm/yyyy"
推荐答案
是的,你可以使用momentjs来解析它,并将其与字符串
Yes, you could use momentjs to parse it and compare it back with the string
function isValidDate(str) {
var d = moment(str,'D/M/YYYY');
if(d == null || !d.isValid()) return false;
return str.indexOf(d.format('D/M/YYYY')) >= 0
|| str.indexOf(d.format('DD/MM/YYYY')) >= 0
|| str.indexOf(d.format('D/M/YY')) >= 0
|| str.indexOf(d.format('DD/MM/YY')) >= 0;
}
测试代码
tests = ['',' ','x','1/1','1/12/2015','1/12/2015 1:00 PM']
for(var z in tests) {
var test = tests[z];
console.log('"' + test + '" ' + isValidDate(test));
}
输出
"" false
" " false
"x" false
"1/1" false
"1/12/2015" true
"1/12/2015 1:00 PM" true
这篇关于如何测试字符串是有效的日期还是不使用时间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!