45

我现在正在使用一个 API,它提供了一个 epochTime。我已经尝试了一切将这个纪元时间转换为日期,但它似乎没有工作,包括$epoch_time / 1000然后使用该date()函数来转换它。

纪元时间看起来像这样 1353430853299。有没有办法做到这一点?strtotime()也没有工作。

似乎所有其他关于纪元时间的读物都是关于将日期更改为纪元时间,但我希望反过来。任何帮助是极大的赞赏。

4

7 回答 7

65

使用 substr($epoch, 0, 10) 对其进行了修复,然后对任何想知道 13 位数纪元时间的人使用日期函数。

这是一个示例代码:

echo date("Y-m-d H:i:s", substr("1477020641000", 0, 10));
// Result: 2016-10-20 20:30:41
于 2012-11-20T16:55:52.573 回答
33

有几种不同的方法可以做到这一点。

首先,您所拥有的是一个 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);
于 2012-11-20T16:42:16.133 回答
15
$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

于 2012-11-20T16:39:42.700 回答
13
<?php
$epoch = '1353429562';

date_default_timezone_set('GMT');
echo date('Y-m-d H:i:s', $epoch);
于 2012-11-20T16:40:21.170 回答
2

仅供参考,发送 JSON 数据的 API 使用以毫秒为单位的纪元以与 Web 浏览器兼容。

我不知道为什么 PHP 需要删除毫秒,因为它是每个 Web 浏览器的标准。

所以,你可以用左边的10,或者/1000(如果你不想在2286年11月20日惹麻烦,最好除以1000!!!)

于 2013-11-07T13:56:59.550 回答
1

您只需从epoch 格式中选择 10 位数字

<?php echo date("Y-m-d H:i:s", substr("1621157545307", 0, 10)); ?>

输出将类似于:

2021-05-16 15:02:25

于 2021-05-16T10:00:00.553 回答
0

这在您除以 1000 时有效:

echo date("Y-m-d H:i:s", round(1353430853299/1000))

在此示例中,您将得到1353430853.299,因此您必须将其四舍五入以去除数字的小数部分。如果你不想让它变圆,你也可以使用 floor 。

于 2020-05-27T20:07:46.650 回答