Delphi: DateTime 的 UnixTime 字符串给出了意外的结果

Delphi: UnixTime string to DateTime gives unexpected result

我正在尝试将 unixtime 字符串转换为 datetime,但它给出了错误的结果。我正在使用 Delphi XE2 并使用 Dateutils 的 UnixToDateTime 函数来转换 unixtime 字符串,但没有成功。我还使用了我在网络上发现的不同功能,结果仍然相同。以下是必要的信息:

Unixtime string value is 1552274340690
The result is "51159-08-14 04:51:30" which should be this "3/11/2019, 11:19:00 AM". The result I got was from an online converter.

下面的示例代码使用 System.DateUtils 的 UnixToDateTime:

var
 nUnixTime : Int64;
begin
 nUnixTime := StrtoInt64(sUnixTime); //sUnixTime = 1552274340690;
 Result = UnixToDateTime(nUnixTime);

下面是我在网上找到的示例代码:

const
 UnixStartDate: TDateTime = 25569.0;
var
 nUnixTime : Int64;
begin
 nUnixTime := StrtoInt64(sUnixTime); //sUnixTime = 1552274340690;
 Result := (nUnixTime / 86400) + UnixStartDate; 

求助,万分感谢

小测试

Caption:=DateTimeToStr(UnixToDateTime(SecondsBetween(StrToDate('01.01.1970'), Now)));` 

给出正确的当前时间。

请注意,UnixTime 目前 is measured

1552307060
1552274340690

而您的值(在第二行)以 毫秒为单位

因此您可以将其除以 1000 以获得 UnixToDateTime 函数可接受的值