delphi 判断输入的日期格式
delphi中excel数据导入数据库其中excel日期字段要求必须是'2012-03'这种格式,(即只取年月相当于判断一个字符串)否则提示日期格式不正确怎么实现?...
delphi 中excel数据导入数据库 其中excel日期字段要求必须是'2012-03'这种格式,( 即只取年月相当于判断一个字符串) 否则提示日期格式不正确 怎么实现?
展开
展开全部
Function IsMyDateFormat(aStr: String): Boolean;
Function IsMyYear(I: Integer): Boolean;
Begin
Result := (I > 1990) And (I < 2099); //自己定义年的范围
End;
Function IsMyMonth(I: Integer): Boolean;
Begin
Result := (I > 0) And (I < 13);
End;
Var
alist: TStringList;
sYY, sMM: String;
iYY, iMM: Integer;
Begin
Result := False;
If Length(aStr) = 7 Then
Begin
alist := TStringList.Create;
Try
alist.Delimiter := '-';
alist.DelimitedText := aStr;
If alist.Count = 2 Then
Begin
sYY := alist[0];
sMM := alist[1];
If (Length(sYY) = 4) And
(Length(sMM) = 2) And
(TryStrToInt(sYY, iYY)) And
(TryStrToInt(sMM, iMM)) And
IsMyYear(iYY) And
IsMyMonth(iMM) Then
Begin
Result := True;
End;
End;
Finally
alist.Clear;
alist.Free;
End;
End;
End;
Procedure TForm1.BitBtn1Click(Sender: TObject);
Var
S: String;
Begin
S := '2012-12';
If Not IsMyDateFormat(S) Then
Begin
Application.MessageBox(Pchar(Format('错误的日期格式:%s', [S])), 'msg', 64);
End;
End;
Function IsMyYear(I: Integer): Boolean;
Begin
Result := (I > 1990) And (I < 2099); //自己定义年的范围
End;
Function IsMyMonth(I: Integer): Boolean;
Begin
Result := (I > 0) And (I < 13);
End;
Var
alist: TStringList;
sYY, sMM: String;
iYY, iMM: Integer;
Begin
Result := False;
If Length(aStr) = 7 Then
Begin
alist := TStringList.Create;
Try
alist.Delimiter := '-';
alist.DelimitedText := aStr;
If alist.Count = 2 Then
Begin
sYY := alist[0];
sMM := alist[1];
If (Length(sYY) = 4) And
(Length(sMM) = 2) And
(TryStrToInt(sYY, iYY)) And
(TryStrToInt(sMM, iMM)) And
IsMyYear(iYY) And
IsMyMonth(iMM) Then
Begin
Result := True;
End;
End;
Finally
alist.Clear;
alist.Free;
End;
End;
End;
Procedure TForm1.BitBtn1Click(Sender: TObject);
Var
S: String;
Begin
S := '2012-12';
If Not IsMyDateFormat(S) Then
Begin
Application.MessageBox(Pchar(Format('错误的日期格式:%s', [S])), 'msg', 64);
End;
End;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
if (StrToDateDef(s+'-01', 0) = 0) then
showmessage('日期格式不正确');
showmessage('日期格式不正确');
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
搞的太复杂了,定义一字符型变量,把日期串赋值给它,再用一个for循环,逐字检测字符串中的“-”个数就行了,如果超过1个,就给提示,最多好用不了五行代码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
比较呆板的办法
try
if strtoint(copy(s,1,4)) and length(copy(s,1,4)) =4 and
copy(s,5,1)='-' and
strtoint(copy(s,6,2)) and length(copy(s,1,4)) =2
else
showmessage('日期格式不正确')
except
showmessage('日期格式不正确')
end;
try
if strtoint(copy(s,1,4)) and length(copy(s,1,4)) =4 and
copy(s,5,1)='-' and
strtoint(copy(s,6,2)) and length(copy(s,1,4)) =2
else
showmessage('日期格式不正确')
except
showmessage('日期格式不正确')
end;
追问
copy(s,5,1)='-' 这个怎么编译不过去?
追答
忘了 你得将 copy(s,5,1)='-' 这个括起来 (copy(s,5,1)='-')
if语句多个条件 要拿括号 括的
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询