【问题标题】:is there a built in functionality in php to convert seconds to hh:mm:ss [duplicate]php 中是否有内置功能可以将秒转换为 hh:mm:ss [重复]
【发布时间】:2011-06-04 18:20:08
【问题描述】:

php 中是否有将秒转换为 hh:mm:ss 的内置功能

【问题讨论】:

  • 我不知道。不过,这里有简单的代码 sn-ps。谷歌“php 秒到 hh mm ss”。第一个结果
  • 秒??你是说时间戳吗??
  • @simshaun - 我知道 - 谢谢,这就是我要求内置的原因。@shankhan - 秒,而不是时间戳
  • ?为什么投反对票?这个问题我冒犯了谁以及我是如何冒犯的?

标签: php time


【解决方案1】:

是的,strftime() 函数(manual):

print(strftime("%H:%M:%S", $_seconds_ ))

【讨论】:

  • 如果秒数超过 24 小时就会中断。
【解决方案2】:

没有内置函数,但它可以工作:

function formatSeconds($seconds){
  $hours = $seconds / (60 * 60);
  $minutes = ( $seconds - $hours * 60 * 60) / 60;
  $seconds = $seconds - $hours * 60 * 60 - $minutes * 60 - $seconds;
  return $hours.':'.$minutes.':'.$seconds;
}

【讨论】:

  • 如果您想要以 0 为前缀的数字,请使用 str_pad
  • 给零添加前缀你也可以使用sprintf()return sprintf('%02d:%02d:%02d', $hours, $minutes, $seconds);
  • 感谢 Amil,这是一个更好的解决方案。
【解决方案3】:

我最近需要一个答案,我遇到了this web page 关于将 phpdate 插入 mysql 表的问题。 (我敢打赌这也是你正在处理的问题。)这似乎表明你可以使用类似的东西

$mysqldate = date( 'H:i:s', time());

即使秒数超过 24 小时,这似乎也能正常工作。

【讨论】:

  • 我喜欢不加注释的反对票。
【解决方案4】:
    $seconds=3672;
    echo date_create()->add(new DateInterval("PT{$seconds}S"))
                      ->diff(new DateTime)
                      ->format('%H:%I:%S');

只是另一种可行的方式。

【讨论】:

    猜你喜欢
    • 2011-10-30
    • 1970-01-01
    • 2018-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    相关资源
    最近更新 更多