导航:首页 > 编程语言 > 日期的验证代码

日期的验证代码

发布时间:2024-07-12 00:09:12

js 验证是否有效日期

functioncheck(date){
return(newDate(date).getDate()==date.substring(date.length-2));
}
//参数date可以格式化为xx-xx-xx或xxxx-xx-xx或用/分割

附:

通常来说,javascript验证日期的有效性可以通过正则判断

但正则表达式无法精准验证日期的有效性,你无法通过正则表达式判断出1900-02-29是非法日期而2000-02-29是合法日期,而且正则表达式匹配起来比较繁琐。

要想精确验证,最容易想到的方法就是通过月份判断日期是否合法(1~28/29/30/31),你可以用一个数组表示每月的天数,如daysInMonth=[31,28,31,30,31,30,31,31,30,31,30,31],但你会发现daysInMonth[1]这个值可能是28或29,你又要写一个判断闰年的函数来解决这个问题......

这至少要花费20行以上的代码来完成这件事,而通过javascript中的Date对象,我们只需要1行代码即可完成上述功能。

function check(date){

return (new Date(date).getDate()==date.substring(date.length-2));

}

date为一个待检查的类日期字符串(如2013-01-01、2013/01/01、2013/01/32、2013/02/29),不论这个字符串是否正确

通过新建的Date对象(new Date(date)),可以识别出该日期是否正确,如果不正确则返回Invalid Date

但这样会有一个bug,当日期的值在1-31之间,new Date总返回一个新的对象,不论该月份是否存在这个日期(如2013-02-30将返回日期对象Sat Mar 02 2013 08:00:00 GMT+0800 (中国标准时间)),返回结果是下个月的日期而不报错

所以要用getDate()方法获取日期(new Date('2013-02-30')对象的getDate()方法将返回2)

date.substring(date.length-2)会获取到字符串最后两位也就是日期的部分,这与Date对象的日期部分做比较,如果相等则说明日期有效,否则为无效日期

如果日期无效则'=='左边值为NaN,右边无论是什么(''、null、undefined、NaN等)结果都为false

Ⅱ js验证日期格式mm-dd-yyyy,例如月份不要超过12

<!DOCTYPEHTML>
<html>
<head>
<metacharset="UTF-8"/>
<title>JS</title>
<STYLE>
</STYLE>
<scripttype="text/javascript">
window.onload=function()
{
vardate=newDate,year=date.getFullYear();
if(year%400==0||year%4==0&&year%100!=0)
{
alert('今年是闰年');
}
else
{
alert('今年不是闰年');
}

varreg=/^(0[1-9]|1[0-2])-(0[1-9]|[12]d|3[01])-[1-9]d{3}$/;
varstr="12-01-2011";
alert(reg.test(str));

str="13-01-2011";
alert(reg.test(str));
}
</script>
</head>
<body>
</body>
</html>

Ⅲ java判断是否是日期

楼主提出的问题有点片面,我的理解是,你是不是想判断字符串是不是日期格式?如果已经是日期类型,那就不需要判断了,对把。判断给定字符串是不是日期我给你提供两种解决思路,一种是用正则,代码我给你写好了。

publicbooleanisDate(Stringdate){
/**
*判断日期格式和范围
*/
Stringrexp="^((\d{2}(([02468][048])|([13579][26]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|([1-2][0-9])))))|(\d{2}(([02468][1235679])|([13579][01345789]))[\-\/\s]?((((0?[13578])|(1[02]))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(3[01])))|(((0?[469])|(11))[\-\/\s]?((0?[1-9])|([1-2][0-9])|(30)))|(0?2[\-\/\s]?((0?[1-9])|(1[0-9])|(2[0-8]))))))";

Patternpat=Pattern.compile(rexp);

Matchermat=pat.matcher(date);

booleandateType=mat.matches();

returndateType;
}

参数就是你要判断的日期字符串,返回布尔值;

另一种方式就是:玩字符串正则才是王道嘛!希望采纳

publicbooleanisValidDate(Stringstr){
booleanconvertSuccess=true;
//指定日期格式为四位年/两位月份/两位日期,注意yyyy/MM/dd区分大小写;
//如果想判断格式为yyyy-MM-dd,需要写成-分隔符的形式
SimpleDateFormatformat=newSimpleDateFormat("yyyy/MM/ddHH:mm");
try{

format.setLenient(false);
format.parse(str);
}catch(ParseExceptione){
//e.printStackTrace();
//如果抛出ParseException或者NullPointerException,就说明格式不对
convertSuccess=false;
}
returnconvertSuccess;
}

推荐使用正则,

Ⅳ javascript验证日期格式

日期格式校验:

//判断输入的内容是否为日期格式

function checkDateFormate(Field) {

var inputDateValue = Field.value;

var desc = Field.description;

if(inputDateValue == null || inputDateValue == '') {

return false;

}

//获取输入字符串的长度

var inputValueLength = inputDateValue.length;

//如果满足下面判断的所有条件才算合法的日期,否则不合法

if(checkNumeric(inputDateValue) && checkLegth(inputValueLength) && checkSpecialChar(inputDateValue) ) {

return true;

}else {

errorMessage("请输入合法的" + desc +"\n类型为日期,格式为YYYY-MM-DD 或者YYYYMMDD");

Field.focus();

return false;

}

}

//日期只能是8~10位

function checkLegth(length) {

if(length < 8 || length > 10) {

return false;

}

return true;

}

//如果输入的内容中包含‘-’,则按照‘-’分割来去年月日,否则直接按照位数取

function checkSpecialChar(inputDateValue) {

var index = inputDateValue.indexOf('-');

var year = 0;

var month = 0;

var day = 0;

if(index > -1) {

var lastIndex = inputDateValue.lastIndexOf('-');

//只能是YYYY-M-DD或者YYYY-MM-DD的形式

if(lastIndex - index < 1 || lastIndex - index > 3) {

return false;

}

var arrDate = inputDateValue.split('-');

year = arrDate[0];

month = arrDate[1];

day = arrDate[2];

} else {

year = inputDateValue.substring(0,4);

month = inputDateValue.substring(4,6);

day = inputDateValue.substring(6,8);

}

if(Number(month) > 12 || Number(day) > 31 ||Number(month)<1

|| Number(day)<1 || year.length != 4) {

return false;

} else if(day > getLastDayOfMonth(Number(year),Number(month))) {

return false;

}

return true;

}

//判断输入的内容将‘-’替换成为数字1后,是否全部为数字

function checkNumeric(inputDateValue) {

var replacedValue = inputDateValue.replace(/-/g,'1');

return isNumeric(replacedValue);

}

//判断是否为数字

function isNumeric(strValue)

{

var result = regExpTest(strValue,/\d*[.]?\d*/g);

return result;

}

function regExpTest(source,re)

{

var result = false;

if(source==null || source=="")

return false;

if(source==re.exec(source))

result = true;

return result;

}

//获得一个月中的最后一天

function getLastDayOfMonth(year,month){

var days=0;

switch(month){

case 1: case 3: case 5: case 7: case 8: case 10: case 12: days=31;break;

case 4: case 6: case 9: case 11: days=30;break;

case 2: if(isLeapYear(year)) days=29;else days=28;break;

}

return days;

}

//判断是否为闰年

function isLeapYear(year){

if((year %4==0 && year %100!=0) || (year %400==0)) return true;

else return false;

}

阅读全文

与日期的验证代码相关的资料

热点内容
qq分组久伴酒伴久伴 浏览:697
文档转成pdf格式文件 浏览:621
离子数据怎么写 浏览:876
jspapijar官网下载 浏览:366
html调用文本文件 浏览:921
想学数控编程哪里好 浏览:860
js获取系统动态时间间隔 浏览:165
win10改win7进pe卡住 浏览:456
u盘中毒ink文件 浏览:718
苹果换机数据迁移包含哪些数据 浏览:234
程控可编程直流电源在哪里 浏览:598
容积长宽高的数据从什么面测量 浏览:978
苹果手游工作室 浏览:362
数据型号特别多怎么合并 浏览:600
企业微信电脑版怎么无法接受文件 浏览:968
微信个人相册怎么隐藏 浏览:368
上传文件时怎么获取文件全路径 浏览:955
linuxjs读取文件 浏览:104
exe后缀的pdf文件 浏览:381
win8升级到专业版 浏览:487

友情链接