PHP 中两个时间戳之间的差异

Difference between two time stamps in PHP

在我看来,这应该回显 11 小时,但 returns 12;我错过了什么?

$start_time = "06:00";
$end_time = "17:00";
$LOD = date("H:i", ((strtotime($end_time) - strtotime($start_time))));
echo  "Length of day: " . $LOD . " hours";

更新:运行 在 MAMP 环境中的我的 MBPro 上;系统时间设置为 24 小时

因为它会更改到您的本地服务器 php 时间。

试试这个

<?php

    $start_time = "06:30";
    $end_time = "17:50";
    $default_time = "00:00";


    $LOD = date("H:i", (strtotime($default_time)+(strtotime($end_time) - strtotime($start_time))));
    echo  "Length of day: " . $LOD . " hours";

    echo "<br>";

    $diff = strtotime($end_time) - strtotime($start_time);
    $hour = floor($diff / 3600);
    $minute = ($diff % 3600) / 60;
    echo "Length of day: " . $hour . ":" . $minute . " hours";
?>

以这种方式使用 date 没有任何意义。

如果你想要一个最低限度的感觉,那么你应该添加strtotime("00:00")作为你的初始时间。

(end - start) + init

问题出在这里:

date_default_timezone_set('Asia/Singapore');
echo date('r', strtotime('06:00')); // Mon, 25 May 2015 06:00:00 +0800
date_default_timezone_set('America/Denver');
echo date('r', strtotime('06:00')); // Sun, 24 May 2015 06:00:00 -0600

注意到更改时区后日期如何偏移了一天?这是因为您提供给 strtotime() 的日期是相对日期,所以您需要 "ground" 它在一天的开始:

echo date('H:i', strtotime('17:00') - strtotime('06:00') + strtotime('00:00'));

或者,使用 DateTime:

$t1 = new DateTime('06:00');
$t2 = new DateTime('17:00');
echo $t2->diff($t1)->format('%H:%I');