Delphi · 2023年11月27日

时间变量与字符串间的转换

时间变量转字符串

这个比较简单,直接调用SysUtils单元中的FormatDateTime进行转换即可

FormatDateTime('yyyy-mm-dd hh:mm:ss', _payTime);
Pascal

字符串转时间变量

一般来说,我们常用SysUtils单元中的StrToDatetime进行转换

Result := StrToDatetime('2000-01-01 00:00:00');
Pascal

但这种调用方式会受到操作系统日期时间格式的影响,很可能会报错; 正确的方法应该如下:

//根据日期格式
function StrToDatetimeEx(_Time:string; _format:byte):TDateTime;
var
  sTime : string;
  settings: TFormatSettings;
begin
  try
    settings.DateSeparator := '-';
    settings.TimeSeparator := ':';
    settings.ShortDateFormat := 'yyyy-mm-dd';
    settings.LongTimeFormat := 'hh:nn:ss';
    sTime := Trim(_Time);
    if sTime = '' then
    begin
      Result := StrToDatetime('2000-01-01 00:00:00', settings);
      Exit;
    end;
    Result := StrToDatetime(sTime, settings);
  except
    on E:Exception do
    begin
      Result := StrToDatetime('2000-01-01 00:00:00', settings);
    end;
  end;
end;
Pascal

这样才能避免系统格式对转换过程的影响。