德尔菲。我需要将日期时间字符串转换为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);
...字符串如下:时间戳:=‘26-2月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‘的时间戳;我没有问题.
我不知道我错过了什么?有人有线索吗?
发布于 2016-02-29 12:07:49
StrToDateTime不支持将月份指定为名称的格式,无论是短的还是长的。
您必须使用其他方法解析文本。坦率地说,这种格式很容易解析。
-上拆分日期部分,以获得日期、月份和年份部分。搜索12个月短的名字,以找到匹配。:上分割时间部分以查找小时、分钟和秒。或者使用StrToTime。或者,您可以使用输入并将短月名称替换为月份号,并将StrToDateTime使用mm月份格式。
https://stackoverflow.com/questions/35698993
复制相似问题