delphi取13位的Unix时间戳

以前取UNIX的时间戳基本都是引用 DateUtils后,使用的DateTimeToUnix,但是这个函数取出来的时间戳只有10位的,没有到毫秒,找了一会,不记得应该怎么取毫秒的时间戳了。

先看了一下系统DateTimeToUnix的代码:

function DateTimeToUnix(const AValue: TDateTime; AInputIsUTC: Boolean): Int64;
var
  LDate: TDateTime;
 begin
  if AInputIsUTC then
    LDate := AValue
  else
    LDate := TTimeZone.Local.ToUniversalTime(AValue);
  Result := SecondsBetween(UnixDateDelta, LDate);
  if LDate < UnixDateDelta then
     Result := -Result;
 end;

最后根据这段代码修改了一下:

var
  LDate: TDateTime;
 begin
  LDate := TTimeZone.Local.ToUniversalTime(now);
  Memo1.Lines.Add(inttostr(MilliSecondsBetween(UnixDateDelta, LDate)));

做了一个测试,并在网上使用在线转换进行了检验。这段代码执行结果是:1654011740643。

在网上测试还原:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值