-2

为什么下面代码的输出是负数?

代码:

$date=strtotime("2013-04-10 21:31:30");
$now=time();
$diff=$now-$date;
echo $diff;

上面代码的输出是-17295

谢谢!

4

4 回答 4

1

因为您strtotime("2013-04-10 21:31:30")从较小的 ( ) 中减去较大的 ( $date)

但这也可能是因为你没有设置时区或者在 PHP 中设置不正确,if$now真的大于$date

于 2013-04-10T16:47:06.637 回答
1

因为 $date 的时间戳在未来,因此 $now 小于它,因此产生一个负数

于 2013-04-10T16:47:07.537 回答
1

我认为你得到了否定的答案2013-04-10 21:31:30,因为你分配给$datePHP 变量的时间是印度标准时间

您的服务器时区可能不是 Asia/Calcutta。因此,您需要使用date_default_timezone_set函数将脚本中所有日期/时间函数使用的默认时区设置为Asia/Calcutta

这应该可以完美运行:IDEONE DEMO

<?php
$date=strtotime("2013-04-10 21:31:30");
if(function_exists('date_default_timezone_set')) 
                                date_default_timezone_set("Asia/Calcutta");
$now=time();
$diff=$now-$date;
echo $diff;
?>
于 2013-04-10T16:56:56.487 回答
0

如果我们是13656127081970 年 1 月 1 日的秒数,今晚 21:31:30 是 1970 年 1 月 1 日的秒数,当您从今晚的指定时间 ( ) 中1365625890减去现在 ( ) 时,您将得到秒数(即 3.6 小时(也就是 3 小时 30 分钟) ish))将来)13656127081365625890-13182

于 2013-04-10T16:53:33.473 回答