You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Chrome Cookie时间戳转换为Delphi TDateTime类型?

将Chrome Cookie的Unix时间戳转换为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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 16:53:18