2

这似乎应该有一个非常简单的解决方案,但是我正在尝试的一切要么给我一个错误,要么给我错误的结果。

我从 MySQL 表中提取数据,时间以 Epoch 格式存储在数据库中。当我在网站上进行查询时,它显示:3672(与数据库中显示的数字相同)。我尝试过使用 date() 函数、许多不同的 str* 函数、不同的算术运算,但是没有什么能给我实际时间,它应该显示为:'1:02'。

我不是想提取日期、实际时间等。我只是想将一个 Epoch 时间字符串转换为传统的 'H:mm' 格式,因为这些是持续时间,而不是时间戳。

任何帮助将不胜感激!

4

1 回答 1

1

正如其他人已经注意到的那样,这实际上不是任何标准的纪元时间,而只是自午夜以来的秒数。

查看您的示例,您只需要几小时和几分钟(四舍五入)。这会给你那些:

$h = (int)($number / 3600);
$m = ceil(($number - $h * 3600) / 60);
$result = sprintf('%d:%02d', $h, $m);

将数字除以 3600(60 秒 * 60 分钟)将为您提供小时数。使用您的 3672 示例,这将为您提供 1。

要获得分钟,您只需删除小时以获得秒(72),然后将其除以 60 以获得分钟(1 分钟和 12 秒)。由于您的示例指定 1:02 是结果,因此您可以简单地取下一个上整数 (2)。

正如您指定的那样,最终结果是 1:02。

于 2013-01-21T05:13:23.503 回答