dongyan3237 2010-12-11 05:17
浏览 34
已采纳

php - 秒离开时间?

I'm trying to format a date to say how much time is left (in a readable format) from how many seconds are left:

<?php
    $seconds = 23414;
    $date = new DateTime();
    $date->setTime(0, 0, $seconds);
    echo $date->format('z G:i:s');
?>

This example might output something like: 344 11:46:45 which is not what I'd like. It should say something like 6 days, 4:12:36. I just don't see anything here: http://www.php.net/manual/en/function.date.php that would help me format it correctly. Ideas?

  • 写回答

2条回答 默认 最新

  • doujin8673 2010-12-11 05:45
    关注

    I don't know of anything built in, but it's easy enough to write:

    function formatSeconds($secondsLeft) {
    
      $minuteInSeconds = 60;
      $hourInSeconds = $minuteInSeconds * 60;
      $dayInSeconds = $hourInSeconds * 24;
    
      $days = floor($secondsLeft / $dayInSeconds);
      $secondsLeft = $secondsLeft % $dayInSeconds;
    
      $hours = floor($secondsLeft / $hourInSeconds);
      $secondsLeft = $secondsLeft % $hourInSeconds;
    
      $minutes= floor($secondsLeft / $minuteInSeconds);
    
      $seconds = $secondsLeft % $minuteInSeconds;
    
      $timeComponents = array();
    
      if ($days > 0) {
        $timeComponents[] = $days . " day" . ($days > 1 ? "s" : "");
      }
    
      if ($hours > 0) {
        $timeComponents[] = $hours . " hour" . ($hours > 1 ? "s" : "");
      }
    
      if ($minutes > 0) {
        $timeComponents[] = $minutes . " minute" . ($minutes > 1 ? "s" : "");
      }
    
      if ($seconds > 0) {
        $timeComponents[] = $seconds . " second" . ($seconds > 1 ? "s" : "");
      }
    
      if (count($timeComponents) > 0) {
        $formattedTimeRemaining = implode(", ", $timeComponents);
        $formattedTimeRemaining = trim($formattedTimeRemaining);
      } else {
        $formattedTimeRemaining = "No time remaining.";
      }
    
      return $formattedTimeRemaining;
    
    }
    

    I haven't tested it thoroughly, but the tests I did run worked fine. You might want to test it yourself a bit before using it.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 2024-五一综合模拟赛
  • ¥15 如何将下列的“无限压缩存储器”设计出来
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度
  • ¥30 关于#r语言#的问题:如何对R语言中mfgarch包中构建的garch-midas模型进行样本内长期波动率预测和样本外长期波动率预测
  • ¥15 ETLCloud 处理json多层级问题
  • ¥15 matlab中使用gurobi时报错
  • ¥15 这个主板怎么能扩出一两个sata口