如何将无分隔符的格式化日期时间字符串转换为TDateTime?
处理无分隔符日期时间字符串(yyyymmddhhnnss)转TDateTime的方法
针对你遇到的无分隔符日期时间字符串转换问题,有几种高效的内置方法可以替代手动解析:
方法1:使用TDateTime.TryParseExact(Delphi XE8及以上版本)
这是最直观且安全的方式,直接指定目标格式即可完成转换,无需处理分隔符:
var TargetDT: TDateTime; DateTimeStr: string; begin DateTimeStr := '20240520143025'; // 示例字符串 // 使用不变格式设置避免系统区域影响 if TDateTime.TryParseExact(DateTimeStr, 'yyyymmddhhnnss', TFormatSettings.Invariant, TargetDT) then begin // 转换成功,可使用TargetDT end else begin // 处理转换失败的情况 end; end;
方法2:自定义TFormatSettings配合StrToDateTime(兼容更多Delphi版本)
如果你的Delphi版本不支持TryParseExact,可以通过构造无分隔符的格式设置来实现:
var FS: TFormatSettings; TargetDT: TDateTime; DateTimeStr: string; begin DateTimeStr := '20240520143025'; FS := TFormatSettings.Create; FS.DateSeparator := ''; // 清空日期分隔符 FS.TimeSeparator := ''; // 清空时间分隔符 // 指定要匹配的格式字符串 TargetDT := StrToDateTime(DateTimeStr, ['yyyymmddhhnnss'], FS); end;
注意:此重载的
StrToDateTime接受格式数组,你可以添加多个备选格式以提升兼容性。
这两种方法都不需要手动拆分字符串,利用Delphi内置的日期时间解析逻辑,效率和可靠性都优于手动解析。
内容的提问来源于stack exchange,提问作者happyNoob
相关产品推荐
相关产品推荐

