Domino Code Fragment

Code Name*
Y2K Compliant Date Format Checker
Date*
04/19/2000
Source (or email address if you prefer)*
Rlatulippe@romac.com
IP address:.
Description*
These two JavaScript functions form a Y2K compliant date format checker. They will handle dates in US format mm/dd/yy or mm/dd/yyyy
Type*
JavaScript
Categories*
(Misc)
Implementation:
Required Client:
Server:
Limitations:
Comments:
Files/Graphics attachments (if applicable): Code:

<HTML>
<SCRIPT>
function isLeapYear(str) {
if (str.length != 2 && str.length != 4) return 0;
if (isNaN(parseInt(str))) return 0;
if (str == 0) {
alert('Cannot determine leap year, Not Y2K compliant');
return 0
}
if (str / 400 == parseInt(str / 400)) return 1;
else if (str / 4 == parseInt(str / 4) && str / 100 != parseInt(str / 100)) return 1;
else return 0
}


function US_isDateOk(str) {
var err=0;


if (str.length != 8 && str.length != 10) {
err=1 //invalid date string length
}
else {
month = str.substring(0, 2);
separator1 = str.substring(2, 3);
day = str.substring(3, 5);
separator2 = str.substring(5, 6);
year = str.substring(6, str.length);


if (isNaN(month)) err = 2; //not a number
else if (month < 1 || month > 12) err = 3; //month out of range
else if (separator1 != '/' && separator1 != '-') err = 4; //invalid date separator
else if (separator2 != '/' && separator2 != '-') err = 4;
else if (isNaN(day)) err = 2;
else if (day < 1 || day > 31) err = 5; //day out of range
else if (isNaN(year)) err = 2;
else if (year < 0) err = 6; //year out of range


}
if (err == 0) {


if ((month == 4 || month == 6 || month == 9 || month == 11) && day > 30) {
err = 5
}
else if (month == 2 && day > 28) {


if (day == 29 && isLeapYear(year) == 1);
else if (day > 28) err = 5
}
}


if (err != 0) {
alert('Invalid US formatted date. Error #' + err)
}
else alert('date ok')


}
</SCRIPT>
<BODY>
<FORM>
Date (as mm/dd/yy or mm-dd-yyyy)<BR>
<INPUT NAME=test SIZE=10><BR>
<INPUT TYPE=BUTTON VALUE='test date' OnClick='US_isDateOk(form.test.value)'>
</FORM>
</BODY>
</HTML>