delphi日期时间格式错误

delphi日期时间格式错误,delphi,datetime,timestamp,Delphi,Datetime,Timestamp,德尔菲。 我需要将datetime字符串转换为TDateTime类型。我使用的代码是: ... var fs : TFormatSettings; dt: TDateTime; begin fs := TFormatSettings.Create; fs.DateSeparator := '-'; fs.TimeSeparator := ':'; fs.ShortDateFormat := 'dd-mmm-yy'; fs.ShortTimeFormat := 'hh:

德尔菲。 我需要将datetime字符串转换为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:=“yyy/mm/dd”;和ShortTimeFormat:=“hh:nn:ss”;我没有问题


我不知道我错过了什么?有人有线索吗?

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

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

  • 拆分空格字符上的输入以获取日期和时间部分
  • -
    上拆分日期部分以获得日、月和年部分。搜索12个短月份名称以查找匹配项
  • 拆分
    上的时间部分以查找小时、分钟和秒。或者使用
    strotime

  • 或者,您可以接受输入,将短月份名称替换为月份编号,并将
    strodatetime
    mm
    month格式一起使用。

    当您报告看到错误消息但未包含其内容时,总是令人沮丧。这对我来说意味着您没有阅读错误消息。当人们遇到错误消息时,他们常常会呆若木鸡,因为他们认为他们不会理解错误消息,或者无法理解错误消息,或者错误消息没有传达任何有用的信息,或者我不知道是什么。无论如何,你永远不会知道,错误消息可能有用。永远不要忽略这些细节。Version Delphi 10 Seattletit说转换错误:-)EConvertError,“26-Feb-16 08:30:28”不是有效的日期和时间我发布的答案提供了比自己解析日期更简单的解决方案。