Delphi:UnixTime字符串到DateTime给出了意想不到的结果

问题描述 投票:-2回答:1

我试图将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; 

请帮助,非常感谢。

datetime delphi unix-timestamp epoch
1个回答
2
投票

小测试

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

给出正确的当前时间。

注意UnixTime现在is measured在几秒钟内

1552307060
1552274340690

而你的价值(在第二行)是以毫秒为单位。

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

© www.soinside.com 2019 - 2024. All rights reserved.