我在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
$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类
你要先把时间戳转换为秒。
$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。