当我调用UnixToDateTime时,为什么将来会有数千年的结果?

dav*_*l12 4 unix delphi time datetime timestamp

我有以下时间戳:1444288186967.

当我把它放入Epoch转换器时,我得到正确的结果08 Oct 2015 07:09:46.

但是,当我使用(如另一篇文章中提到)时,function UnixToDateTime(const AValue: Int64): TDateTime我得到02 Sep 47737 11:02:47.奇怪,不是吗?

我的代码(使用TMS Aurelius)

Person.EndDate.Value := UnixToDateTime(FHit.TimestampUntil);
Run Code Online (Sandbox Code Playgroud)

哪里FHit.TimestampUntilInt64作为UnixToDateTime函数的期望.

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

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

Tom*_*erg 7

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

  i64 := round(1444288186967/1000);
  dt := UnixToDateTime(i64);
  Edit2.Text := DateTimeToStr(dt);
Run Code Online (Sandbox Code Playgroud)

Edit2显示8.10.2015 7:09:47