- 论坛徽章:
- 0
|
一个日期检查程序,相信对大家能有所启发!
/** 看我的 **/
/***********************************************************************/
/*函数名称:IsRunNian */
/*功能介绍:判断是否为润年 */
/*调用格式:int IsRunNian( i_year ) */
/*参数说明:i_year 输入年份(yyyy) */
/*返回说明: 1 -- 是润年 */
/* -1 -- 不是润年 */
/***********************************************************************/
int IsRunNian(int i_year)
{
if( ((i_year%4==0)&&(i_year%100!=0)) || (i_year%400==0) ) return 1;
return -1;
}
/***********************************************************************/
/*函数名称:CheckDate */
/*功能介绍:检查输入日期的合法性 */
/*调用格式:int CheckDate(s_date) */
/*参数说明: s_date 输入日期(格式yyyymmdd) */
/*返回说明:0 -- 合法 */
/* 其它 -- 不合法 */
/***********************************************************************/
int CheckDate(s_date)
char *s_date;
{
int i,y,m,d;
intmouth_date[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};
int rc;
if(strlen(s_date)< return -101;
for(i=0;i<8;i++)
if ( !isdigit(s_date) ) return -102;
i=sscanf(s_date,"%4d%2d%2d", &y, &m, &d);
if(i!=3) return -103;
if(y<0) return -104;
if(m<1||m>;12) return -105;
rc=IsRunNian(y);
if(m==2 && rc==1) {
if(d>;29 || d<1) return -106;
}
else if(d>;mouth_date[m] || d<1) return -107;
return 0;
} |
|