以前取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。
在网上测试还原: