【问题标题】:How to calculate the difference between the hours of two timestamps? [duplicate]如何计算两个时间戳的小时数之差? [复制]
【发布时间】:2014-05-22 18:44:13
【问题描述】:

我正在尝试创建一个时间表页面,员工可以在其中打卡和打卡。在他们下班后,计算他们的总小时数,因此,time2(下班)减去 time1(下班)。我在这里使用了一个固定的时间,因为我只想知道如何自己做差异,然后我可以弄清楚如何做剩下的事情(除了总数之外,其他一切都有效)。我提供了我的代码和结果。如果您能用时间解决问题,如果您发布代码和结果,我将不胜感激。有人建议我在第 54 行使用 abs() ,但它仍然不起作用。感谢您的时间。

$time1 = strtotime('09:10:04');
$time2 = strtotime('12:16:06');
$diff = $time2 - $time1;
echo "Start Time: ".date('h:i:s', $time1)."<br>";
echo "End Time: ".date('h:i:s', $time2)."<br>";
echo "Total hours: " . date('h:i:s', $diff);

开始时间:09:10:04

结束时间:12:16:06

总小时数:10:06:02

【问题讨论】:

    标签: php timestamp strtotime


    【解决方案1】:

    我认为,您的问题正在发生,因为您生活在 +7 时区。 当您通过 strtotime() 提取时间时,系统将两次都转换为 UTC。 当您减去 t2-t1 时,任何时区偏移都会归零。

    但是,当您打印结果时, date() 会向您的本地时区添加偏移量, 并打印 +7 小时。

    为了保留这个添加,只需在程序开头写一次:

    date_default_timezone_set('UTC');
    

    【讨论】:

    • 是的,我确实住在“(UTC-05:00) 东部时间(美国和加拿大)”。这是我在编码时忽略的事情。那条线解决了我的问题,让我在处理时间戳时更加了解时区。谢谢。
    • 好的,由于 AM/PM 循环时间问题,我没有猜到您的时区。 +7 + (-5) 是 12。
    【解决方案2】:

    为此我喜欢DateTime

     $time1 = new DateTime('09:10:04');
     $time2 = new DateTime('12:16:06');
     $diff = $time1->diff($time2);
     echo $diff->format('%h hours');
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-28
      • 2020-05-13
      相关资源
      最近更新 更多