Delphi 为什么我在未来数千年调用UnixToDateTime时会得到一个结果?

Delphi 为什么我在未来数千年调用UnixToDateTime时会得到一个结果?,delphi,unix,datetime,time,timestamp,Delphi,Unix,Datetime,Time,Timestamp,我有以下时间戳:1444288186967 当我把它放在a中时,结果是正确的08 2015年10月07:09:46 但是,当我使用函数UnixToDateTime(const AValue:Int64):TDateTime时(如中所述),我得到02 Sep 47737 11:02:47。奇怪,不是吗 我的代码(使用TMS Aurelius) 其中,FHit.TimestampUntil是Int64函数所期望的 Person.EndDate.Value是一个TMS Aurelius可为空的TDat

我有以下时间戳:
1444288186967

当我把它放在a中时,结果是正确的08 2015年10月07:09:46

但是,当我使用
函数UnixToDateTime(const AValue:Int64):TDateTime时(如中所述),我得到02 Sep 47737 11:02:47。奇怪,不是吗

我的代码(使用TMS Aurelius)

其中,
FHit.TimestampUntil
Int64
函数所期望的

Person.EndDate.Value
是一个TMS Aurelius可为空的
TDateTime


我怎么可能得到这样的结果呢?

自1970年1月1日起,Unix时间戳通常以秒为单位。但是,值
1444288186967
以毫秒为单位。除以1000并取整,您将得到预期的日期和时间8.10.2015 7:09:47

  i64 := round(1444288186967/1000);
  dt := UnixToDateTime(i64);
  Edit2.Text := DateTimeToStr(dt);
Edit2显示8.10.2015 7:09:47

说明:“Unix日期和时间值编码为自1970年1月1日开始的午夜起的秒数”,并说明
1444288186967的“假设此时间戳以毫秒为单位”。
  i64 := round(1444288186967/1000);
  dt := UnixToDateTime(i64);
  Edit2.Text := DateTimeToStr(dt);