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);