/****************************************************************************
功能描述: 校验日期合法性,日期格式为:YYYYMMDD
****************************************************************************/
int CheckDate(char *sDate)
{
int y, m, d;
char chLeapFlag;
char szYear[5];
char szMonth[3];
char szDay[3];
int i;
for(i=0; i<8; i++)
{
if( sDate[i]<'0' || sDate[i]>'9' )
return (1);
}
sprintf(szYear, "%.4s", sDate);
sprintf(szMonth, "%.2s", sDate+4);
sprintf(szDay, "%.2s", sDate+6);
y = atoi(szYear);
m = atoi(szMonth);
d = atoi(szDay);
if( m>12 || m<=0 )
return (1);
if( d>31 || d<=0 )
return (1);
if( (m==4 || m==6 || m==9 || m==11) && d==31 )
return (1);
if( m==2 )
{
chLeapFlag = 0;
if( y%400==0 )
chLeapFlag = 1;
else if( y%4==0 && y%100 != 0)
chLeapFlag = 1;
if( chLeapFlag!=1 && d>28 )
return (1);
if( chLeapFlag==1 && d>29 )
return (1);
}
return 0;
}