如何将 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:00 var_dump($item-&gt;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 实现此目的。

因为你有一个timestamp13 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 时间戳转换为日期和时间?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 13 位 unix 纪元时间格式转换为日期时间?

c#得到13位时间戳

如何从 parquet 文件中选择 13 位时间戳列,将其转换为日期并存储为数据框?

python将10位日期时间戳转换为13位GMT时间戳[重复]

如何将日期时间转换为 c 中的 unix 时间戳?

将时间戳转化为日期格式