如何判断日期变量的输入是否合法

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

回复人:Wingsun(孙春阳)

得50分

使用如下程序:返回值为空则表错误。该段程序还可以纠正输入的格式

如:1999.9.9经过转换成为:1999-9-9

1999a9b9---------->1999-9-9

1999-9------------>1999-9-1

1999-------------->1999-1-1

很有用的。

AnsiString __fastcall FormatDate(AnsiString DateTime)

{

AnsiString TempStr1 , TempStr2;

int i , j;

if (DateTime=="")

{

return "";

}

TempStr2 = DateTime.Trim();

if(TempStr2== "")

{

return "";

}

for(i = 1; i

{

if ((TempStr2.SubString(i, 1).AnsiCompare("0")< 0) || (TempStr2.SubString(i, 1).AnsiCompare("9") >0) )

break;

}

TempStr1 = TempStr2.SubString(1,i - 1);

if (i <= TempStr2.Length())

{

for (j = i ;j<=TempStr2.Length();j++)

{

if ((TempStr2.SubString(j, 1).AnsiCompare("0")>=0) && (TempStr2.SubString(j, 1).AnsiCompare("9")<=0))

break;

}

TempStr2 = TempStr2.SubString(j,TempStr2.Length()-j+1);

for(i = 1 ;i< TempStr2.Length();i++)

{

if ((TempStr2.SubString(i, 1).AnsiCompare("0")<0) ||(TempStr2.SubString(i, 1).AnsiCompare("9")>0))

break;

}

if(i==TempStr2.Length())

{

TempStr2 = TempStr1 + "-" + TempStr2.SubString(1,1)+"-01";

}

else

{

TempStr1=TempStr1+"-"+TempStr2.SubString(1,i-1);

TempStr2 = TempStr2.SubString(i,TempStr2.Length()-i+1);

for(i = 1;i

{

if((TempStr2.SubString(i, 1).AnsiCompare("0")>=0)&&(TempStr2.SubString(i, 1).AnsiCompare("9")<=0))

break;

}

TempStr2 = TempStr2.SubString(i,TempStr2.Length()-i+1);

for(i = 1;i<=TempStr2.Length();i++)

{

if((TempStr2.SubString(i, 1).AnsiCompare("0")<0)||(TempStr2.SubString(i, 1).AnsiCompare("9")>0 ))

break;

}

TempStr2 = TempStr2.SubString(1,i-1);

if(TempStr2=="")

TempStr2 = TempStr1 + "-1";

else

TempStr2 = TempStr1 + "-" + TempStr2;

}

}

else

{

TempStr2 = TempStr1 + "-1-1";

}

try

{

StrToDate(TempStr2);

}

catch( EConvertError & e)

{

MessageBox(NULL,"日期格式错误,请重新输入。","日期格式错误",MB_OK+MB_ICONINFORMATION);

TempStr2="";

}

return TempStr2;

}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航