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

时间:2015-10-08 07:17:25

标签: delphi unix datetime time timestamp

我有以下时间戳:1444288186967

当我把它放在Epoch Converter时,我得到正确 08 Oct 2015 07:09:46

然而,当我使用(如another post中所述)function UnixToDateTime(const AValue: Int64): TDateTime时,我得到 02 Sep 47737 11:02:47 。很奇怪,不是吗?

我的代码(使用TMS Aurelius)

Person.EndDate.Value := UnixToDateTime(FHit.TimestampUntil);

其中FHit.TimestampUntilInt64函数所需的UnixToDateTime

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

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

1 个答案:

答案 0 :(得分:7)

正常情况下,Unix时间戳以秒为单位,自1970年1月1日起。但是,值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