【问题标题】:Calculating time difference (PHP)计算时差 (PHP)
【发布时间】:2026-01-14 10:30:01
【问题描述】:

这是我的功能

<?php    
//Find time difference
    function timeDifference($timeEnd, $timeStart){
      $tResult = strtotime($timeEnd) - strtotime($timeStart);
      return date("G:i", $tResult-3600);
    }
?>

还有一个例子

<?php
   echo timeDifference(12:00:00,08:30:00);
?>

我的本​​地主机上的结果很好,但在我的服务器上在线显示的是 21:30,而应该是 3:30。有什么办法呢?

更新

这是我的 php 5.2 解决方案

<?php
//Find time difference
function timeDifference($timeEnd, $timeStart){
  $tResult = round(abs(strtotime($timeEnd) - strtotime($timeStart)));
  return gmdate("G:i", $tResult);
}
?>

感谢大家的帮助

【问题讨论】:

    标签: php function time strtotime


    【解决方案1】:

    如果您使用的是 PHP 5.3,它带有一个内置的 date_diff() 函数。

    这可能比尝试调试自己的函数更容易。

    顺便说一下,你给出的代码:

    echo timeDifference(12:00:00,08:30:00);
    

    永远不会起作用,因为您在时间字符串中没有引号。我认为这是问题中的一个错字,因为您声称该函数正在返回结果(即使它们不正确)

    【讨论】:

    • 我有 5.2.17 :( 不能用
    • @Warface - 你真的应该升级;不再支持 5.2。 (我很欣赏这并不总是一种选择,但如果可能的话,你应该这样做)
    • 对于 5.3 的用户,我会接受这个答案,如果不是我在问题中的更新可能是一个替代方案。谢谢!
    【解决方案2】:

    这可能是时区问题。尝试在 PHP 页面顶部使用此函数设置时区:

    http://www.php.net/manual/en/function.date-default-timezone-set.php

    http://www.php.net/manual/en/timezones.php

    【讨论】:

    • 没有 它在我的服务器上显示正确的时间。
    • 那么您可能想尝试在 OP 中作为注释提到的 24 小时格式选项,或者 Spudley 提到的 date_diff() 函数。