如何使用 moment 测试字符串是否有效?
How to test a string is valid date or not using moment?
我想测试输入的日期和/或时间是否有效。
这可以用 moment 来完成吗,因为用 javascript 进行日期和时间测试似乎是一场噩梦。 (为此花费了数小时)。
测试数据是这样的。
无效
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 方法,但数小时的试验都失败了。
我想这一刻会有一些东西。所以尝试了以下方法,所有这些都不起作用,因为我认为没有这样的时刻。
var valid = moment(input).isDate()
var valid = moment().isDate(input)
我的时间格式是"dd/mm/yyyy"
您可以使用 Date.parse() 函数。
Here是详细的使用方法
是的,您可以使用 momentjs 来解析它并将其与字符串进行比较
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
Moment 有一个名为 isValid
的函数。
您想将此函数与目标日期格式和严格解析参数一起使用(否则您的验证可能不会一致)委托给图书馆所有需要的检查(如闰年):
var dateFormat = "DD/MM/YYYY";
moment("28/02/2011", dateFormat, true).isValid(); // return true
moment("29/02/2011", dateFormat, true).isValid(); // return false: February 29th of 2011 does not exist, because 2011 is not a leap year
我想测试输入的日期和/或时间是否有效。
这可以用 moment 来完成吗,因为用 javascript 进行日期和时间测试似乎是一场噩梦。 (为此花费了数小时)。
测试数据是这样的。
无效
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 方法,但数小时的试验都失败了。
我想这一刻会有一些东西。所以尝试了以下方法,所有这些都不起作用,因为我认为没有这样的时刻。
var valid = moment(input).isDate()
var valid = moment().isDate(input)
我的时间格式是"dd/mm/yyyy"
您可以使用 Date.parse() 函数。
Here是详细的使用方法
是的,您可以使用 momentjs 来解析它并将其与字符串进行比较
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
Moment 有一个名为 isValid
的函数。
您想将此函数与目标日期格式和严格解析参数一起使用(否则您的验证可能不会一致)委托给图书馆所有需要的检查(如闰年):
var dateFormat = "DD/MM/YYYY";
moment("28/02/2011", dateFormat, true).isValid(); // return true
moment("29/02/2011", dateFormat, true).isValid(); // return false: February 29th of 2011 does not exist, because 2011 is not a leap year