如何判断日期是否合法?(0分)

  • 主题发起人 主题发起人 babyrun
  • 开始时间 开始时间
B

babyrun

Unregistered / Unconfirmed
GUEST, unregistred user!
我想判断edit中输入的日期是否正确,我设定日期的标准形式为20030710形式的,如果不符合这种形式则报错退出。该如何处理?
 
为什么你不用日期型的控件???
 
用MaskEdit,你看行不。
 
写一个函数:
Result := False;
if Length(S) = 8 then
if StrToInt(Copy(S, 1, 4)) in [1900..2100] then
if StrToInt(Copy(S, 5, 2)) in [1..12] then
if StrToInt(Copy(S, 7, 2)) in [1..31] then
Result := True;
我有个函数,支持下列任何一种格式:
yyyy-mm-dd
yyyy-m-dd
yyyy-m-d
mm-dd
m-dd
m-d
dd
d
 
delphi不是自己带了一个日期型控件
 
用datetimepicker
 
简单。
procedure TForm1.Button1Click(Sender: TObject);
function isvaldate(s:string):boolean;
var y,m,d:word;
begin
try
y:=strtoint(copy(trim(s),1,4));
m:=strtoint(copy(trim(s),5,2));
d:=strtoint(copy(trim(s),7,2));
result:=isvaliddate(y,m,d);
except
result:=false;
end;
end;
begin
if isvaldate(edit1.Text) then
showmessage('ok');
end;
 
[:D][:D][:D]
var
MyDate: TDateTime;
try
MyDate := StrToDate(Edit1.text);
except
MessageBox(Handle, '不合法!','', MB_OK);
end;
 
谢谢各位,我按你们说的试试,如有问题再来咨询。
 
时间范围大的可用maskedit
时间范围小的可用datetimepicker
 
我通常是用下面这个方法,基本上可以检验所有格式
try
//时间
StrToDateTime(varDate);
except
showmessage(格式不正确);
Exit;
end;
同理,如果判断别的格式,那DateTimeToStr换成别的:StrToDate;StrToInt,.....
 
还是建议你用日期控件,就不会有这种问题,
用EDIT不是自找麻烦吗?
 
procedure TForm1.Button1Click(Sender: TObject);
function isvaldate(s:string):boolean;
var y,m,d:word;
begin
try
y:=strtoint(copy(trim(s),1,4));
m:=strtoint(copy(trim(s),5,2));
d:=strtoint(copy(trim(s),7,2));
result:=isvaliddate(y,m,d);
except
result:=false;
end;
end;
begin
if isvaldate(edit1.Text) then
showmessage('ok');
end;
或者用
用MaskEdit
或者用Delphi自带的控件
 
delphi不是自带了一个日期型的控件吗,用它试试啊。
 
datetimepicker我知道是提取系统时间的。可是,maskedit会起到什么作用?我得试试
 
其实用Try...except就可以了
 
接受答案了.
 
后退
顶部