我在计算两次之间的差异时遇到了问题。这是我的代码。
<?php
$Now = date('h:i:s');
echo 'Now is: '. $Now . '<br>';
$time1 = strtotime('01:22:24');
$time2 = strtotime('01:28:24');
$diff = $time2 - $time1;
echo 'Time 1: '.date('h:i:s', $time1).'<br>';
echo 'Time 2: '.date('h:i:s', $time2).'<br>';
if($diff){echo 'Difference: '.date('h:i:s', $diff);
}else{echo 'No Difference.';}
?>
它输出的是
现在是:03:07:01 时间1:01:22:24 时间2:01:28:24 差异:06:06:00
时间“现在是:”是正确的时间。我的php.ini中的时区设置为US / Central,我甚至尝试过America / Chicago,但没有帮助。我用apache 2.0运行PHP 5.3.5 有任何想法吗?感谢。
答案 0 :(得分:0)
您尝试输出以秒表示的差异作为日期值。
差异应表示为:
if($diff){echo 'Difference: '.$diff . " seconds";
答案 1 :(得分:0)
$ diff的值是秒数。当您使用日期时,您可以将本地时间本地化为6小时。
改用gmdate。
if($diff){echo 'Difference: '.gmdate('h:i:s', $diff);
答案 2 :(得分:0)
date
函数将UNIX时间戳作为其第二个参数。 UNIX时间戳是自1970年1月1日以来的秒数。因此,当您将$diff
作为第二个参数传递给date
时,它会将其解释为自1970年1月1日以来的秒数,然后显示小时,分钟和该日期的日期组成部分!
您应该考虑使用http://us3.php.net/manual/en/class.datetime.php和http://us3.php.net/manual/en/datetime.diff.php。以下是使用这些类的代码:
<?php
$time1 = new DateTime('01:22:24');
$time2 = new DateTime('01:28:24');
if ($time1 == $time2) {
echo 'No Difference.';
} else {
$diff = $time2->diff($time1);
echo 'Difference: ' . $diff->format('%H:%I:%S');
}