将来自 SQL 数据库的时间戳转换为字符串
Convert timestamp coming from SQL database to String
我将 SQL 中的时间戳保存为 bigint(20)。该数字是正确的,在 android 或 https://www.epochconverter.com 中它工作正常。
但是我无法根据从数据库收到的时间戳创建日期字符串。
首先,时间戳似乎是作为字符串从数据库中获取的,所以我不能只说echo date("d.m.Y, $timestamp)
。结果就是著名的 31.12.1969.
所以我尝试了 echo date("d.m.Y, strtotime($timestamp))
。然而,尽管据说 strtotime 能够将几乎所有内容转换为时间戳,但包含时间戳的简单字符串是不可能的。结果仍然保留在 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 Class 的强大功能。
PHP DateTime 的官方文档 Class Link 下面:
PHP DateTime Class
您必须先将时间戳转换为秒。
$timestamp = 1588489252657;
$dateInUnixSeconds = round($timestamp / 1000, 0);
$date = \DateTimeImmutable::createFromFormat('U', (string) $dateInUnixSeconds);
echo $date->format('d.m.Y');
PS:
我建议您使用 \DateTimeImmutable
对象来避免可变性问题。
https://github.com/Chemaclass/php-best-practices/blob/master/technical-skills/immutability.md
我将 SQL 中的时间戳保存为 bigint(20)。该数字是正确的,在 android 或 https://www.epochconverter.com 中它工作正常。
但是我无法根据从数据库收到的时间戳创建日期字符串。
首先,时间戳似乎是作为字符串从数据库中获取的,所以我不能只说echo date("d.m.Y, $timestamp)
。结果就是著名的 31.12.1969.
所以我尝试了 echo date("d.m.Y, strtotime($timestamp))
。然而,尽管据说 strtotime 能够将几乎所有内容转换为时间戳,但包含时间戳的简单字符串是不可能的。结果仍然保留在 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 Class 的强大功能。
PHP DateTime 的官方文档 Class Link 下面: PHP DateTime Class
您必须先将时间戳转换为秒。
$timestamp = 1588489252657;
$dateInUnixSeconds = round($timestamp / 1000, 0);
$date = \DateTimeImmutable::createFromFormat('U', (string) $dateInUnixSeconds);
echo $date->format('d.m.Y');
PS:
我建议您使用 \DateTimeImmutable
对象来避免可变性问题。
https://github.com/Chemaclass/php-best-practices/blob/master/technical-skills/immutability.md