[英]Validating the following date format YYYYMMDD using JavaScript
我正在尝试获取下一个日期的输入验证,但我没有得到正当理由。
我尝试使用 substring 使用月份和日期字段,但它没有按预期工作
if (result == null || result == "") {
alert("no value");
} else if (!newCheck(newDate)) {
alert("Not a valid date");
} else {
alert("valid date");
}
function newCheck(input) {
var yearfield = input.substring(0, 4);
var monthfield = input.substring(4, 6);
var dayobj = new Date(yearfield, monthfield - 1, '01');
if ((dayobj.getMonth() + 1 != monthfield) || (dayobj.getFullYear() != yearfield)) {
alert("Month" + monthfield);
return false;
} else {
return true;
}
}
如果输入 YYYYMMDD 日期,我的结果将返回 true。
Bravo 的答案也将验证日期,此答案将仅验证日期格式。 如果您只想使用YYYMMDD
格式的日期,请使用此代码。 如果日期是20191010
,您可以试试这个,那么它将返回 2019 年 10 月 10 日的日期,
let str = "20191010";
let year = str.substring(0,4);
let month = str.substring(4,6);
let day = str.substring(6,8);
if(str.length === 8 && (parseInt(month) <= 12 && parseInt(month) >=1) && (parseInt(day)<=31 && parseInt(day)>=1) && parseInt(year)){
if( parseInt(month)=='02' && parseInt(day)<=29){
console.log('valid');
let date = new Date(year,String(parseInt(month)-1),day);
console.log(date);
}
else{
console.log('invalid date')
}
}
else{
console.log('invalid date');
}
以下工作 - 唯一if
条件是原始格式是否为 8 位 - 所有其他验证基本上是通过 Date object 本身的方法完成的,因为在 javascript 中你可以做“愚蠢”的事情new Date(2019, 99, 99)
不引起异常
8 位数字的验证以构造日期等于输入日期为条件 - new Date(2019, 99, 99) === 2028-06-07T00:00:00.000Z
因此验证失败
2019-99-99T00:00:00.000Z !== 2028-06-07T00:00:00.000Z
function validDateString(s) { const match = s.match(/^(\d{4})(\d\d)(\d\d)$/); if (match) { const [year, month, day] = match.slice(1); const iso = `${year}-${month}-${day}T00:00:00.000Z`; const date = new Date(Date.UTC(year, month - 1, day)); return date.toISOString() === iso; } return false; } console.log(validDateString('20200231')); console.log(validDateString('20200228')); console.log(validDateString('20209999'));
你能试试这个正则表达式吗:
^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$
var isValid = /^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$/.test(inputField.value);
你可以使用 momentjs
if (!moment(dateEntered,'MM-DD-YYYY').isValid())
{
console.log('Invalid Date');
}
else
{
console.log('Valid Date');
}
https://codepen.io/jay3dec/pen/sKqeh/
对于您的场景
if (!moment(dateEntered,'YYYYMMDD').isValid())
{
console.log('Invalid Date');
}
else
{
console.log('Valid Date');
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.