我现在正在使用一个API,它提供了一个epochTime。我已经尝试过所有方法将这个epochTime转换为日期,但似乎都不起作用,包括将$epoch_time / 1000
以及使用date()
函数进行转换。
epoch时间看起来像这样1353430853299。有没有办法做到这一点?strtotime()
也无效。
似乎所有关于epoch time的其他读物都是关于将日期更改为epoch time,但我要做的是相反的操作。非常感谢任何帮助。
如果有人关心13位时间戳,可以使用substr($epoch, 0, 10)来修复它,然后使用date函数。以下是示例代码:
echo date("Y-m-d H:i:s", substr("1477020641000", 0, 10));
// Result: 2016-10-20 20:30:41
有几种不同的方法可以实现这个。
首先,你手上拿到的是一个Unix纪元时间(1970年1月1日),这使得一切变得更容易了。
在PHP中,请尝试:
$epoch = 1344988800;
$dt = new DateTime("@$epoch");
echo $dt->format('Y-m-d H:i:s');
显示您的日期echo date('r', $epoch);
DateTimeFormatter
期望的格式兼容的ISO-8601格式。 当将日期时间从PHP发送到自动将字符串反序列化为Joda Time的DateTime
的Java后端时,这特别有用。 只需使用'c'
:date('c', $epoch);
- Clint Eastwood$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)。
<?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 函数。
echo date("Y-m-d H:i:s", substr("1477020641000", 0, -3));
。 - Josh Whitlow