Ⅰ 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;
}