我现在正在使用一个 API,它提供了一个 epochTime。我已经尝试了一切将这个纪元时间转换为日期,但它似乎没有工作,包括$epoch_time / 1000
然后使用该date()
函数来转换它。
纪元时间看起来像这样 1353430853299。有没有办法做到这一点?strtotime()
也没有工作。
似乎所有其他关于纪元时间的读物都是关于将日期更改为纪元时间,但我希望反过来。任何帮助是极大的赞赏。
使用 substr($epoch, 0, 10) 对其进行了修复,然后对任何想知道 13 位数纪元时间的人使用日期函数。
这是一个示例代码:
echo date("Y-m-d H:i:s", substr("1477020641000", 0, 10));
// Result: 2016-10-20 20:30:41
有几种不同的方法可以做到这一点。
首先,您所拥有的是一个 Unix 纪元时间。(1/1/1970),这使一切变得容易得多。
在 PHP 中,尝试
$epoch = 1344988800;
$dt = new DateTime("@$epoch");
echo $dt->format('Y-m-d H:i:s');
显示您的日期
或者
如果您想要较长的 RFC232 日期:
echo date('r', $epoch);
$epoch = 1344988800;
$dt = new DateTime("@$epoch"); // convert UNIX timestamp to PHP DateTime
echo $dt->format('Y-m-d H:i:s'); // output = 2012-08-15 00:00:00
更多:http ://www.epochconverter.com/programming/functions-php.php
<?php
$epoch = '1353429562';
date_default_timezone_set('GMT');
echo date('Y-m-d H:i:s', $epoch);
仅供参考,发送 JSON 数据的 API 使用以毫秒为单位的纪元以与 Web 浏览器兼容。
我不知道为什么 PHP 需要删除毫秒,因为它是每个 Web 浏览器的标准。
所以,你可以用左边的10,或者/1000(如果你不想在2286年11月20日惹麻烦,最好除以1000!!!)
您只需从epoch 格式中选择 10 位数字
<?php echo date("Y-m-d H:i:s", substr("1621157545307", 0, 10)); ?>
输出将类似于:
2021-05-16 15:02:25
这在您除以 1000 时有效:
echo date("Y-m-d H:i:s", round(1353430853299/1000))
在此示例中,您将得到1353430853.299
,因此您必须将其四舍五入以去除数字的小数部分。如果你不想让它变圆,你也可以使用 floor 。