如何将 13 位 Unix 时间戳转换为日期和时间?
Posted
技术标签:
【中文标题】如何将 13 位 Unix 时间戳转换为日期和时间?【英文标题】:How to convert a 13 digit Unix Timestamp to Date and time? 【发布时间】:2020-06-21 03:38:50 【问题描述】:我有这个 13 位数的时间戳 1443852054000,我想将其转换为日期和时间,但没有成功。我试过这个代码:
echo date('Y-m-d h:i:s',$item->timestamp);
对我和这个都不起作用
$unix_time = date('Ymdhis', strtotime($datetime ));
还有这个:
$item = strtotime($txn_row['appoint_date']);
<?php echo date("Y-m-d H:i:s", $time); ?>
我应该用什么?
【问题讨论】:
以毫秒为单位。只需删除最后三个零,您的代码就可以工作了。 【参考方案1】:此时间戳以毫秒为单位,而不是以秒为单位。除以 1000 并使用 date
函数:
echo date('Y-m-d h:i:s', $item->timestamp / 1000);
// e.g
echo date('Y-m-d h:i:s',1443852054000/1000);
// shows 2015-10-03 02:00:54
【讨论】:
我仍然得到这个结果 1970-01-01 01:00:00var_dump($item->timestamp);
我不能说为什么它是空的。您必须自己检查。
我认为,分割的时间戳应该四舍五入(为 date() 提供一个整数)。【参考方案2】:
javascript 中使用 13 位时间戳来表示时间(以毫秒为单位)。在 PHP 10 中,数字时间戳用于以秒为单位表示时间。所以除以 1000 并四舍五入得到 10 位数。
$timestamp = 1443852054000;
echo date('Y-m-d h:i:s', floor($timestamp / 1000));
【讨论】:
很好的答案兄弟,谢谢。【参考方案3】:您可以通过DateTime::createFromFormat 实现此目的。
因为你有一个timestamp
和13 digits
,你必须将它除以1000
,才能将它与DateTime
一起使用,即:
$ts = 1443852054000 / 1000; // we're basically removing the last 3 zeros
$date = DateTime::createFromFormat("U", $ts)->format("Y-m-d h:i:s");
echo $date;
//2015-10-03 06:00:54
演示
http://sandbox.onlinephpfunctions.com/code/d0d01718e0fc02574b401e798aaa201137658acb
您可能想set the default timezone 以避免任何警告
date_default_timezone_set('Europe/Lisbon');
注意:
更多关于php
的日期和时间php the right way
【讨论】:
告诉扎克伯格以上是关于如何将 13 位 Unix 时间戳转换为日期和时间?的主要内容,如果未能解决你的问题,请参考以下文章
如何从 parquet 文件中选择 13 位时间戳列,将其转换为日期并存储为数据框?