回覆人: 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; } |