【发布时间】:2011-09-22 00:37:36
【问题描述】:
我将存储开始时间为 microtime(),结束时间为 microtime() 到数据库中。
现在我想计算脚本执行所需的秒数/分钟数/小时数。
在 PHP 中我该怎么做?
【问题讨论】:
标签: php
我将存储开始时间为 microtime(),结束时间为 microtime() 到数据库中。
现在我想计算脚本执行所需的秒数/分钟数/小时数。
在 PHP 中我该怎么做?
【问题讨论】:
标签: php
基本上是这样的:
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)得到一个浮动
d 只会让你到 31 天!顺便说一句,因为 php 执行时间限制应该从不允许脚本运行那么长时间
如果你有一个时间A和一个时间B,以秒为单位,那么这两个绝对时间之间的秒数是:
B - A
如果要格式化这个秒数,可以使用date美化一下。
【讨论】:
微时间到秒或小时或分钟的转换?
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 小时【讨论】:
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));
}
【讨论】: