StrToDate只能转换数字,所以你的字符串中有月份名,你就要使用VarToDateTime。这里是例子。
procedure TForm1.Button1Click(Sender: TObject);
var
DT : TDateTime;
begin
DT := VarToDateTime('December 6, 1969');
ShowMessage(FormatDateTime('yyyy-mm-dd hh:nn:ss', DT));
DT := VarToDateTime('6-Apr-1998');
ShowMessage(FormatDateTime('yyyy-mm-dd hh:nn:ss', DT));
DT := VarToDateTime('1998-Apr-6 12:34:00');
ShowMessage(FormatDateTime('yyyy-mm-dd hh:nn:ss', DT));
end;