【问题标题】:microtime to seconds or hours or min conversion [duplicate]微时间到秒或小时或分钟的转换[重复]
【发布时间】:2011-09-22 00:37:36
【问题描述】:

我将存储开始时间为 microtime(),结束时间为 microtime() 到数据库中。

现在我想计算脚本执行所需的秒数/分钟数/小时数。

在 PHP 中我该怎么做?

【问题讨论】:

    标签: php


    【解决方案1】:

    基本上是这样的:

    echo date("H:i:s",$endtime-$starttime);
    

    $endtime-$starttime 以秒为单位给出持续时间,date 用于格式化输出。听起来像在数据库中保存和读取不是你的问题,所以我在我的例子中省略了它。请注意,您必须使用microtime(true) 才能使其正常工作,而microtime() 的空格分隔输出则不能那么容易进行计算。

    编辑:您也可以自行完成所有计算。这只是这样的基本数学:

    $duration = $endtime-$starttime;
    $hours = (int)($duration/60/60);
    $minutes = (int)($duration/60)-$hours*60;
    $seconds = (int)$duration-$hours*60*60-$minutes*60;
    

    【讨论】:

    • 您的第一个示例并不总是有效。 microtime 返回一个 unix 时间戳,它显然从 1/1/70 00:00:00 UTC 开始。如果$endtime - $starttime 大于 24 小时,则返回的差异时间戳将表示 2/1/70 01:00:00 UTC(假设它正好是 25 小时)。将其格式化为H:i:s 将得到01:00:00,这似乎是一小时。
    • 另外,在您的第二个示例中可能值得指出 microtime() 返回一个 timestamp<space>microseconds 字符串 - 您无法对此进行数学运算,因此您需要使用 microtime(true)得到一个浮动
    • 哦,谢谢亚当的提示,我没想到,但你说得对:如果持续时间超过 24 小时,我的第一个解决方案就行不通 - 一个会必须添加“d”(如果需要,还必须添加“m”和“Y”)来输出天数或手动进行计算(就像我的第二个示例所示)
    • 是的,但d 只会让你到 31 天!顺便说一句,因为 php 执行时间限制应该从不允许脚本运行那么长时间
    • 对您的第二条评论:我在帖子中添加了提示。我假设 vinothkumar 使用 microtime(true) 来保存浮点数而不是字符串,但他没有给出确切的信息。
    【解决方案2】:

    如果你有一个时间A和一个时间B,以秒为单位,那么这两个绝对时间之间的秒数是:

    B - A
    

    如果要格式化这个秒数,可以使用date美化一下。

    【讨论】:

      【解决方案3】:

      微时间到秒或小时或分钟的转换?

      microtime 是 php 函数的名称,它返回以微秒为单位的时间度量,基本上微秒可以转换为:

      1 毫秒 = 1,000 微秒 1 秒 = 1,000,000 微秒 1 分钟 = 60,000,000 微秒 1 小时 = 3,600,000,000 微秒 要么 1 微秒 = 0.001 毫秒 1 微秒 = 0.000001 秒 1 微秒 = 0.0000000166666667 分钟 1 微秒 = 0.000000000277777778 小时

      【讨论】:

        【解决方案4】:
        function formatPeriod($endtime, $starttime)
        {
        
          $duration = $endtime - $starttime;
        
          $hours = (int) ($duration / 60 / 60);
        
          $minutes = (int) ($duration / 60) - $hours * 60;
        
          $seconds = (int) $duration - $hours * 60 * 60 - $minutes * 60;
        
          return ($hours == 0 ? "00":$hours) . ":" . ($minutes == 0 ? "00":($minutes < 10? "0".$minutes:$minutes)) . ":" . ($seconds == 0 ? "00":($seconds < 10? "0".$seconds:$seconds));
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-01-12
          • 2015-03-23
          • 1970-01-01
          • 1970-01-01
          • 2011-05-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多