Delphi:DateTime的UnixTime字符串给出了意外的结果

时间:2019-03-11 04:28:10

标签: datetime delphi unix-timestamp epoch

我正在尝试将unixtime字符串转换为datetime,但结果不正确。我正在使用Delphi XE2,并使用Dateutils的UnixToDateTime函数转换unixtime字符串,但是没有运气。我还使用了在网络上发现的仍然相同的结果的不同功能。以下是必要的信息:

  

Unixtime字符串值为1552274340690
  结果为“ 51159-08-14 04:51:30”,应为“ 3/11/2019,11:19:00 AM”。我得到的结果是来自在线转换器。

下面的示例代码使用System.DateUtils的UnixToDateTime:

var
 nUnixTime : Int64;
begin
 nUnixTime := StrtoInt64(sUnixTime); //sUnixTime = 1552274340690;
 Result = UnixToDateTime(nUnixTime);

以下是我在网上找到的示例代码:

const
 UnixStartDate: TDateTime = 25569.0;
var
 nUnixTime : Int64;
begin
 nUnixTime := StrtoInt64(sUnixTime); //sUnixTime = 1552274340690;
 Result := (nUnixTime / 86400) + UnixStartDate; 

请帮助,非常感谢。

1 个答案:

答案 0 :(得分:2)

小测试

Caption:=DateTimeToStr(UnixToDateTime(SecondsBetween(StrToDate('01.01.1970'), Now)));` 

给出正确的当前时间。

请注意,现在is measured的UnixTime只需

1552307060
1552274340690

当您的值(在第二行中)以毫秒为单位。

因此,您可以将其除以1000,以得到UnixToDateTime函数可接受的值