怎么鉴别数据是不是yyyymmdd格式(100分)

  • 主题发起人 主题发起人 绯红之王
  • 开始时间 开始时间

绯红之王

Unregistered / Unconfirmed
GUEST, unregistred user!
function bb(s: string):Boolean;
var ss : tdatetime;
begin
shortdateformat:='YYYYMMDD';
ss := date;
result := trystrtodate(s,ss);
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
if bb(edit1.Text) = false then showmessage('wrong')
else showmessage('right');
end;

运行都是显示wrong
不知道trystrtodate哪里用错了
 
关注,我也有这个的问题。
 
这个函数是将字符串转化为日期格式,你这样写是错误的,它的意思是将字符串s转化为时间类型的ss变量,看你输入的是什么吧!!
 
procedure TForm1.Button1Click(Sender: TObject);
var ss: string;
begin
if length(edit1.Text)=8 then
begin
ss:=copy(edit1.Text,1,4)+'-'+copy(edit1.Text,5,2)+'-'+copy(edit1.Text,7,2);
try
formatdatetime('yyyymmdd',strtodatetime(ss));
showmessage('right');
except
showmessage('wrong')
end;
end else
showmessage('wrong');
end;
 
注意你在edit1.Text输入的格式,如果你输入2006-1-1这样的格式,应该可以。
但是你输入20061010这样的格式,就会转换出错。你需要使用这样的格式
yyyy-mm-dd。
当然,如果你操作系统规定的其他格式,你也需要按照系统规定的格式输入。
 
楼主用法错误,另外在年月日之间应加上分隔符:
首部 function TryStrToDate(const S: string; out Value: TDateTime): Boolean;
$[SysUtils.pas
功能 返回字符串S转换成日期Value是否成功
说明 字符非日期表达时返回False并且Value将输出为0
参考 <NULL>
例子
///////Begin TryStrToDate
procedure TForm1.Button1Click(Sender: TObject);
var
vDateTime: TDateTime;
begin
CheckBox1.Checked := TryStrToDate(Edit1.Text, vDateTime);
DateTimePicker1.Date := vDateTime;
end;
///////End TryStrToDate
 
function bb(s: string):Boolean;
var d:tdate;
s:String;
begin
result:=false;
s:=trim(edit1.Text);
if length(s)<>8 then exit;
s:=copy(s,1,4)+'-'+copy(s,5,2)+'-'+copy(s,7,2);
try
d:=strtodate(s);
result:=true;
except
end;
end;
 
function bb(s: string):Boolean
function bb(s: tdatetime):Boolean
 
多人接受答案了。
 

Similar threads

后退
顶部