微时间到秒或小时或分钟的转换[重复]

Posted

技术标签:

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

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

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

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));

【讨论】:

以上是关于微时间到秒或小时或分钟的转换[重复]的主要内容,如果未能解决你的问题,请参考以下文章

正则表达式,用于验证不同格式的字符串,用于特殊时间转换[重复]

如何获得以秒或分钟或小时为单位的时差? [复制]

PHP将DATETIME转换为时间前函数,秒,分钟,小时,天等[重复]

excel如何把时间段转换为分钟或小时数

将天、小时和分钟转换为 UTC - node.js

将秒转换为天、小时、分钟、秒 (MySQL)