【问题标题】:PHP Calculate Exact number of hours minutes and seconds between two timestampsPHP计算两个时间戳之间的确切小时数和秒数
【发布时间】:2016-04-20 10:36:46
【问题描述】:

我有两个时间戳
2016-01-01 00:00:00
2016-01-02 23:59:59

使用 PHP 我如何计算两次之间的小时数和分钟数,并以小数形式获得结果,在 . 后有 2 位。

目前我有这个:

    $Start = new DateTime($StartTime);
    $Finish = new DateTime ($FinishTime);
    $Interval = date_diff($Start,$Finish);
    $Hours = $Interval->format('%h.%i');

但如果用户在第 1 天启动计时器并在第 2 天结束,则结果不正确。

【问题讨论】:

  • $StartTime 和 $FinishTime 中的值是什么?
  • 值与实际问题中发布的时间戳相似。 $starttime 总是在 $finishtime 之前,因为它们是较早生成并存储在 mysql 中准备在此时计算的

标签: php


【解决方案1】:

您可以将天数乘以 24 以将它们转换为小时,然后将小时相加并连接分钟:

$start = new DateTime('2016-01-01 00:00:00');
$end = new DateTime('2016-01-02 23:59:59');
$interval = $end->diff($start);
$days = $interval->format('%d');
$hours = 24 * $days + $interval->format('%h');
echo $hours.':'.$interval->format('%i');

【讨论】:

  • 非常感谢
【解决方案2】:

您可以将 DateTime 格式化为 UNIX 时间戳,然后简单地减去以获得总秒数,并使用 gmdate() 格式化输出。

$Start = new DateTime($StartTime);
$Finish = new DateTime ($FinishTime);
$Interval = $Start->format('U') - $Finish->format('U');
$Hours = gmdate("H:i:s", $Interval); 

【讨论】:

    【解决方案3】:

    试试这个。

    $Hours = $Interval->format('%a.%h.%i');
    

    【讨论】:

    • 这也会给我天数。我需要一个小时的总和。所以我会得到 33.25 或其他东西而不是 1.12.1 我提供的数字不正确,但它确实给出了我需要什么的大致概念。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-28
    • 1970-01-01
    • 1970-01-01
    • 2018-10-27
    • 2020-06-28
    • 2017-05-03
    • 1970-01-01
    相关资源
    最近更新 更多