的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';我没有问题......
我不知道我错过了什么?任何人都有线索?
答案 0 :(得分:4)
StrToDateTime
不支持将月份指定为名称的格式,无论是短格式还是长格式。
您必须使用其他方法解析文本。坦率地说,这种格式很容易解析。
-
上拆分日期部分以获取日,月和年份部分。搜索12个短月份名称以查找匹配项。 :
以查找小时,分钟和秒。或者使用StrToTime
。或者您可以接受输入并将月份短名称替换为月份数字,并使用StrToDateTime
月份格式的mm
。