Как получить агрегированные дни из PHP DateTime :: diff?

$now = new DateTime('now'); $tomorrow = new DateTime('tomorrow'); $next_year = new DateTime('+1 year'); echo "<pre>"; print_r($now->diff($tomorrow)); print_r($now->diff($next_year)); echo "</pre>"; DateInterval Object ( [y] => 0 [m] => 0 [d] => 0 [h] => 10 [i] => 17 [s] => 14 [invert] => 0 [days] => 6015 ) DateInterval Object ( [y] => 1 [m] => 0 [d] => 0 [h] => 0 [i] => 0 [s] => 0 [invert] => 0 [days] => 6015 ) 

любые идеи, почему «дни» показывают 6015? почему он не показывает общее количество дней? Разница в 1 год для меня ничего не значит, поскольку месяцы имеют разное количество дней.

Более подходящий отчет об ошибках будет следующим: # 51184, который фокусируется на проблеме Windows-отчетности 6015 дней (не Windows выглядит ОК).

Пока нет отзывов о том, влияет ли исправление для # 49778 (которое касается другой проблемы) или если проблема сохраняется. Если бы кто-нибудь здесь мог взглянуть и дать некоторую обратную связь, это было бы очень мило с вашей стороны.

Обновите страницу до последней версии php. Эта ошибка возникает только на php 5.3 VC6.

 $now = new DateTime('now'); 

должно быть

 $now = new DateTime(''2010-01-01 00:00:00''); 

подробнее в руководстве http://nl3.php.net/manual/en/datetime.diff.php

Хорошо, выглядит как http://bugs.php.net/bug.php?id=49778 .

его ошибка http://bugs.php.net/bug.php?id=49778

Благодарим вас за сообщение об ошибке.

Дни действительно не заданы при создании DateInterval с использованием конструктора. Усложнение заключается в том, что невозможно определить количество дней, когда указаны месяцы или годы, поскольку они различаются по длине. В некоторых случаях можно заполнить поле дней и оставить его 0 в других. В любом случае, должно быть задокументировано, что поле дней не всегда доступно.