2011-06-20 14 views
1

可能重复:
PHP DateTime::days returns trash?PHP:从日期DIFF天的意外总量

好吧,我没有得到这个......有人能解释我在做什么这里错了吗?

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

这是Windows上的一个已知错误。等一下,找个笨蛋 –

+0

啊!这解释了为什么它在我的服务器上运行。 :) – Nanne

+0

@Pekka是的,解释它!虽然认真......开发者让这样的错误没有定论这么长时间? O.o – Svish

回答

0

应该和它在我的系统:

[email protected]:~$ 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'); 

//

[email protected]:~$ 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评论道:它似乎是Windows系统在PHP中的错误:d

+0

是的!疯狂的讨厌...我的意思是,来吧PHP的人,这是一个应该很久以前就解决的错误! – Svish