使用JavaScript验证以下日期格式YYYYMMDD
我正在尝试获取下一个日期的输入验证,但找不到有效的原因 我尝试使用子字符串来使用月份和日期字段,但它没有按预期工作使用JavaScript验证以下日期格式YYYYMMDD,javascript,Javascript,我正在尝试获取下一个日期的输入验证,但找不到有效的原因 我尝试使用子字符串来使用月份和日期字段,但它没有按预期工作 if (result == null || result == "") { alert("no value"); } else if (!newCheck(newDate)) { alert("Not a valid date"); } else { alert("valid date");
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。请尝试此正则表达式:
^([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)代码>布拉沃的答案也将验证日期,此答案仅验证日期格式。如果您只想使用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');
}
let str=“20191010”;
设年份=str.substring(0,4);
设月=str.substring(4,6);
let day=str.substring(6,8);
如果(str.length==8&&(parseInt(月)=1)&&(parseInt(日)=1)&&parseInt(年)){
if(parseInt(month)='02'&&parseInt(day)以下方法有效-唯一的if
条件是原始格式是否为8位-所有其他验证基本上由Date对象本身的方法完成,因为在javascript中,您可以在不引起异常的情况下执行“愚蠢”的事情新日期(2019、99、99)
8位数字的验证以构造日期等于输入日期为条件-新日期(2019、99、99)==2028-06-07T00:00:00.000Z
,因此验证将失败,因为
2019-99-99T00:00:00.000Z !== 2028-06-07T00:00:00.000Z
功能有效性测试环{
const match=s.match(/^(\d{4})(\d\d)(\d\d)$/);
如果(匹配){
常量[年、月、日]=匹配切片(1);
常量iso=`${year}-${month}-${day}T00:00:00.000Z`;
const date=新日期(date.UTC(年、月-1日));
返回日期。toISOString()==iso;
}
返回false;
}
console.log(validDateString('20200231');
console.log(validDateString('20200228'));
log(validDatastring('20209999');
您可以使用momentjs来实现这一点
if (!moment(dateEntered,'MM-DD-YYYY').isValid())
{
console.log('Invalid Date');
}
else
{
console.log('Valid Date');
}
针对您的场景
Java!==Javascript请在提交问题之前花一些时间正确格式化代码。看起来您的验证HHMMSS时间不是YYYYMMDD日期parseInt(天)更新以处理上述情况20190431还有,20190229将无效。根据问题,他想验证日期格式YYYYMMDD
,而不是日期是否有效。dateented,'MM-DD-yyyyy'
…但格式是yyyyymmdd
if (!moment(dateEntered,'YYYYMMDD').isValid())
{
console.log('Invalid Date');
}
else
{
console.log('Valid Date');
}