$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 в других. В любом случае, должно быть задокументировано, что поле дней не всегда доступно.