我有以下时间戳: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.TimestampUntil
是Int64
函数所需的UnixToDateTime
。
Person.EndDate.Value
是TMS Aurelius可以为空的TDateTime
。
我怎么可能得到这样的结果日期?
答案 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