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