導航:首頁 > 編程語言 > 日期的驗證代碼

日期的驗證代碼

發布時間: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;

}

閱讀全文

與日期的驗證代碼相關的資料

熱點內容
文件格式化恢復 瀏覽:353
v顯卡驅動程序源碼 瀏覽:44
iphone5s聲音小怎麼解決 瀏覽:656
文件名文字看不清了 瀏覽:313
電腦找不到cftmon文件 瀏覽:768
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

友情鏈接