| /** 看我的 **/ /***********************************************************************/ /*函数名称: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)<8) return -101; for(i=0;i<8;i++) if ( !isdigit(s_date[i]) ) 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; } |