这样啊如果全部是1的话两者都有可能啊procedure TForm1.Button1Click(Sender: TObject); var s: string; d: TDateTime; begin s := '0603311445'; if TryStrToDateTime(Copy(s, 1, 2)+'-'+Copy(s, 3, 2)+'-'+Copy(s, 5, 2)+' '+Copy(s, 7, 2)+':'+Copy(s, 9, 2), d) then ShowMessage('是yymmddhhmm格式'+#13+#10+DateTimeToStr(d)); if TryStrToDateTime(Copy(s, 1, 4)+'-'+Copy(s, 5, 2)+'-'+Copy(s, 7, 2)+' '+Copy(s, 9, 2), d) then ShowMessage('是yyyymmddhh格式'+#13+#10+DateTimeToStr(d)); end;
我是从报文里取的日期数据,这个数据的格式必须要求是yymmddhhmm的,其他格式的都要求报错的。
function TryStrToDate(const S: string; out Value: TDateTime): Boolean; var Pos: Integer; begin Pos := 1; Result := ScanDate(S, Pos, Value) and (Pos > Length(S)); end;有没有你自己不知道吗?按F1或者用Ctrl+鼠标左键
var
s: string;
d: TDateTime;
begin
s := '0603311445';
if TryStrToDateTime(Copy(s, 1, 2)+'-'+Copy(s, 3, 2)+'-'+Copy(s, 5, 2)+' '+Copy(s, 7, 2)+':'+Copy(s, 9, 2), d) then ShowMessage('是yymmddhhmm格式'+#13+#10+DateTimeToStr(d));
if TryStrToDateTime(Copy(s, 1, 4)+'-'+Copy(s, 5, 2)+'-'+Copy(s, 7, 2)+' '+Copy(s, 9, 2), d) then ShowMessage('是yyyymmddhh格式'+#13+#10+DateTimeToStr(d));
end;
var
Pos: Integer;
begin
Pos := 1;
Result := ScanDate(S, Pos, Value) and (Pos > Length(S));
end;有没有你自己不知道吗?按F1或者用Ctrl+鼠标左键
不是让你把TryStrToDate拷贝过去,你直接使用TryStrToDate就可以了!!!