delphi日期时间格式错误

时间:2016-02-29 11:59:43

标签: delphi datetime timestamp

的Delphi。 我需要将日期时间字符串转换为TDateTime类型。我使用的代码:

...
var
  fs : TFormatSettings;
  dt: TDateTime;
begin
  fs := TFormatSettings.Create;
  fs.DateSeparator := '-';
  fs.TimeSeparator := ':';
  fs.ShortDateFormat := 'dd-mmm-yy';
  fs.ShortTimeFormat := 'hh:nn:ss';
  dt := StrToDateTime(Timestamp, fs);
...

字符串是这样的:Timestamp:= '26 -Feb-16 08:30:00'

我只收到转换错误消息

  

EConvertError,'26 -Feb-16 08:30:28'不是有效的日期和时间

如果我手动输入格式'yyyy / mm / dd hh:nn:ss'的时间戳并使ShortDateFormat:='yyyy / mm / dd';和ShortTimeFormat:='hh:nn:ss';我没有问题......

我不知道我错过了什么?任何人都有线索?

1 个答案:

答案 0 :(得分:4)

StrToDateTime不支持将月份指定为名称的格式,无论是短格式还是长格式。

您必须使用其他方法解析文本。坦率地说,这种格式很容易解析。

  1. 拆分空格字符上的输入以获取日期和时间部分。
  2. -上拆分日期部分以获取日,月和年份部分。搜索12个短月份名称以查找匹配项。
  3. 将时间部分拆分为:以查找小时,分钟和秒。或者使用StrToTime
  4. 或者您可以接受输入并将月份短名称替换为月份数字,并使用StrToDateTime月份格式的mm