我定义的日期输入类型为:2002-08-10的形式,如何判断日期的有效性?
举例:如果我输入了别的非法字符(如:s0f0-02-ds),如何保证我输入的日期是正确的?怎么判断?
wkl 回复于:2002-08-06 20:15:12 |
你在什么编程环境下! |
jiangnanxue 回复于:2002-11-14 10:09:50 |
SCO UNIX 5.05环境 |
lcz88990200 回复于:2002-11-14 10:21:13 |
/***********************************************************************/ /*函数名称: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(char *ylq) { int i,y,m,d; int mouth_date[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int rc; char s_date[10]; char ylq5[5]; if(strlen(ylq)!=10  return 1; strncpy(s_date,ylq,4);strncpy(ylq5,ylq+5,2);strcat(s_date,ylq5); strncpy(ylq5,ylq+8,2);strcat(s_date,ylq5); for(i=0;i<8;i++) if ( !isdigit(s_date[i])  return 2; i=sscanf(s_date,"%4d%2d%2d", &y, &m, &d); if(i!=3) return 3; if(m<1||m>12) return 5; rc=IsRunNian(y); if(m==2 && rc==1) if(d>29 || d<1) return 6; else if(d>mouth_date[m] || d<1) return 7; return 0; } |
sdccf 回复于:2002-11-14 13:13:42 |
好啊 . |
延伸阅读
文章来源于领测软件测试网 https://www.ltesting.net/