【问题标题】:Converting Epoch time to an H:mm timestamp in PHP在 PHP 中将 Epoch 时间转换为 H:mm 时间戳
【发布时间】:2013-01-04 03:52:40
【问题描述】:

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

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

我没有尝试提取日期、实际时间等。我只是尝试将 Epoch 时间字符串转换为传统的“H:mm”格式,因为这些是持续时间,而不是时间戳。

任何帮助将不胜感激!

【问题讨论】:

  • UNIX 时间戳的长度应为 10 位。为什么时间是 3672?
  • 我认为 date() 不会解析时间戳间隔。只需将该数字除以 60 即可得到秒数 (62)。再除以分钟数(1.02)
  • 检查数据库中日期字段的数据类型,因为 mysql 接受“日期”数据类型的 'YYYY-MM-DD' 格式
  • 要格式化一个持续时间,看看这个question

标签: php mysql time epoch


【解决方案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,正如您指定的那样。

【讨论】:

    猜你喜欢
    • 2019-12-24
    • 2018-11-29
    • 2020-01-19
    • 2016-02-13
    • 2017-03-23
    • 1970-01-01
    • 1970-01-01
    • 2015-08-19
    • 2017-02-13
    相关资源
    最近更新 更多