【问题标题】:PHP: Unexpected total amount of days from date diff [duplicate]PHP:日期差异的意外总天数[重复]
【发布时间】:2011-09-18 23:49:16
【问题描述】:

可能重复:
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吗?

【问题讨论】:

  • 这是 Windows 上的一个已知错误。等一下,找个骗子
  • 啊!这就解释了为什么它在我的服务器上工作。 :)
  • @Pekka 是的,这就解释了!虽然说真的……什么开发人员会让像这样的错误这么久没有得到修复? O.o

标签: php datetime datediff


【解决方案1】:

应该,而且在我的系统上也可以:

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 评论的那样:这似乎是 Windows 系统 PHP 中的一个错误:D

【讨论】:

  • 是的!疯狂烦人...我的意思是,来吧 PHP 人,这是一个早就应该修复的错误!
猜你喜欢
  • 2015-03-23
  • 1970-01-01
  • 2012-02-17
  • 2013-07-24
  • 1970-01-01
  • 2015-12-19
  • 2012-02-20
  • 1970-01-01
  • 2022-11-15
相关资源
最近更新 更多