PHP:从日期diff开始的意外总天数

时间:2011-06-20 20:00:05

标签: php datetime datediff

  

可能重复:
  PHP DateTime::days returns trash?

好的,我没有得到这个......有人可以解释我在这里做错了吗?

date_default_timezone_set('Europe/Oslo');

$a = new DateTime('2011-06-20 21:00:00');
$b = new DateTime('2011-06-21 05:30:00');

echo $a->format('Y-m-d H:i:s') . PHP_EOL;
echo $b->format('Y-m-d H:i:s') . PHP_EOL;

echo $a->diff($b)->format('%a days, %h hours, %i minutes and %s seconds');
echo $a->diff($b)->format('%y years, %m months, %d days, %h hours, %i minutes and %s seconds').PHP_EOL;

我得到的输出是:

2011-06-20 21:00:00
2011-06-21 05:30:00
6015 days, 8 hours, 30 minutes and 0 seconds
0 years, 0 months, 0 days, 8 hours, 30 minutes and 0 seconds

这里的日子怎么样?两种情况都不应该是0?

1 个答案:

答案 0 :(得分:0)

它应该,并且它在我的系统上:

nanne@pustule:~$ cat test.php
<?
date_default_timezone_set('Europe/Oslo');

$a = new DateTime('2011-06-20 21:00:00');
$b = new DateTime('2011-06-21 05:30:00');

echo $a->format('Y-m-d H:i:s') . PHP_EOL;
echo $b->format('Y-m-d H:i:s') . PHP_EOL;

echo $a->diff($b)->format('%a days, %h hours, %i minutes and %s seconds');

//

nanne@pustule:~$ php test.php
2011-06-20 21:00:00
2011-06-21 05:30:00
0 days, 8 hours, 30 minutes and 0 seconds

正如@pekka评论的那样:它似乎是PHP系统中的一个错误:D