首页 > 解决方案 > PHP:如何将 18 位时间从窗口服务器转换为本地时间

问题描述

我查询了一个 API,我得到了这个响应

$response = [635355360000000000.0, 6.400000, 6.510000, 6.400000, 6.470000, 1586684.00];

数组的第一个元素应该是日期,当我环顾四周如何转换它时,最接近的代码让我得到了答案:

$dateLargeInt= $response[0];
$secsAfterADEpoch = $dateLargeInt / (10000000);

$ADToUnixConvertor=((1970-1601) * 365.242190) * 86400; 
// unix epoch - AD epoch * number of tropical days * seconds in a day 
$unixTsLastLogon=intval($secsAfterADEpoch-$ADToUnixConvertor); 

// unix Timestamp version of AD timestamp
$lastlogon=date("d-m-Y", $unixTsLastLogon); // formatted date

echo $lastlogon;

这是我得到的结果 12-05-3614

我也试过这个:

$dateLargeInt= $response[0];
echo date('Y-d-m',$response[0]);

这是结果 20133611831-11-12

标签: phptimestamptimestamp-with-timezone

解决方案


由于文档指定日期以刻度为单位,您可以阅读定义

这篇文章也可以帮助你理解。

然后试试这个:

$seconds = ($response[0] - 621355968000000000) / 10000000;
echo date("Y-m-d H:i:s", $seconds);

推荐阅读