将来自sql数据库的时间戳转换为字符串。

问题描述 投票:0回答:1

我在SQL中保存时间戳为bigint(20)。这个数字是正确的,在安卓或 https:/www.epochconverter.com 它工作得很好。

然而,我无法根据从数据库中接收到的时间戳创建一个日期字符串。

首先,时间戳似乎是以字符串的形式从数据库中获得的,所以我不能直接说:"时间戳是一个字符串"。echo date("d.m.Y, $timestamp). 结果是著名的31.12.1969。

所以我试了一下 echo date("d.m.Y, strtotime($timestamp)). 然而,尽管strtotime据说能够将几乎所有的东西转换为时间戳,但一个简单的包含时间戳的String是不可能的。结果还是停留在Brian Adams可能最喜欢的年份的最后一天。

我通过将$timestamp转换为一个浮动值取得了一些进展,就像这样。echo date("d.m.Y", floatval($timestamp));. 然而,现在事情对我来说真的很混乱。我似乎已经成功地转换了我的时间戳,但是。date() 给我的日期大约是02.09.52299。

我所使用的时间戳是当前时间的时间戳,例如1588489252657,当前的日期是23.03.52307。

所以我想的是根据时间戳1588489252657来确定日期,以便在我的屏幕上看到03.05.2020。

谢谢你的建议!

php unix-timestamp
1个回答
3
投票
<?php

$timestamp = 1588489252657; // Timestamp in Milliseconds
$seconds = round($timestamp/1000, 0); // Timestamp Rounded to Seconds

$date = new DateTime();  // Create PHP DateTime Object
$date->setTimestamp($seconds); // Set the Timestamp
echo $date->format('Y-m-d H:i:s'); // Specify the Required Format

答案差不多都在评论区了。但我分享了这个答案,因为这是另一种OOP方式的方法。你可以利用PHP的DateTime类的力量。

PHP 官方文档 DateTime 类链接如下。PHP的DateTime类


2
投票

你要先把时间戳转换为秒。

$timestamp = 1588489252657;
$dateInUnixSeconds = round($timestamp / 1000, 0);
$date = \DateTimeImmutable::createFromFormat('U', (string) $dateInUnixSeconds);

echo $date->format('d.m.Y');

PS: 我推荐你使用 \DateTimeImmutable 对象,以避免突变性问题。https:/github.comChemaclassphp-best-practicesblobmastertechnical-skillsimmutability.md。

© www.soinside.com 2019 - 2024. All rights reserved.