如何将Chrome Cookie时间戳转换为Delphi TDateTime类型?
问题原因
Chrome Cookie中的时间戳是Unix时间戳,代表从UTC时间1970年1月1日00:00:00开始经过的秒数。你原代码的错误在于,直接把整数时间戳转成数字后传给StrToDateTime——StrToDateTime的作用是解析日期格式的字符串(比如'2025-12-06'),而非处理数字时间戳,因此必然抛出异常。
解决方案
需要把Unix时间戳转换为Delphi的TDateTime类型,核心逻辑是对齐两者的时间基准:
- TDateTime的基准是1899年12月30日,单位为天
- 先确定Unix纪元(1970-01-01 UTC)对应的TDateTime值
- 将Unix时间戳(秒)转换为天数(除以86400,即一天的秒数),再加上Unix纪元的TDateTime值
- 若需转换为本地时间,需额外加上时区偏移(比如东八区加8小时,即
8/24天)
转换函数示例
function UnixTimestampToTDateTime(const UnixTimestamp: Integer): TDateTime; const // 1970-01-01 UTC对应的TDateTime值,等价于EncodeDate(1970, 1, 1) UnixEpoch: TDateTime = 25569.0; SecondsPerDay = 86400; begin // 转换为UTC时间的TDateTime Result := UnixEpoch + (UnixTimestamp / SecondsPerDay); // 若要转为东八区本地时间,取消下面注释 // Result := Result + (8 / 24); end;
使用示例
var d: TDateTime; begin // 转换示例中的时间戳1765064691 d := UnixTimestampToTDateTime(1765064691); // 输出验证,转换为本地时间字符串 ShowMessage(DateTimeToStr(d)); end;
运行上述代码后,示例中的时间戳1765064691会被正确转换为对应的UTC时间,若开启时区偏移则得到你给出的2025年12月6日晚上8:44:51(东八区本地时间)。
内容的提问来源于stack exchange,提问作者delphirules
相关产品推荐
相关产品推荐

