Подфункция Php Datetime перестала работать на PHP7.1 - PullRequest
0 голосов
/ 15 марта 2019

Наконец-то пришло время совершить прыжок! Приведенный ниже код используется для работы на PHP 5.6

Я перехожу на 7.1, и это не удается. Что я делаю неправильно?

$expectedToday = new DateTime();
$expectedToday->sub(new DateInterval('PT5H'));
$this->assertEquals($expectedToday, functionThatReturnsDateTimeSuccessfully()));

Я получаю

Failed asserting that two DateTime objects are equal.
--- Expected
+++ Actual
@@ @@
 2019-03-15T08:35:21+0000

Так что функция ThatReturnsDateTimeSuccessful работает просто.

Однако, когда я закомментирую вторую строку

$expectedToday = new DateTime();
// $expectedToday->sub(new DateInterval('PT5H'));
$this->assertEquals($expectedToday, functionThatReturnsDateTimeSuccessfully()));

Я получаю

Failed asserting that two DateTime objects are equal.
--- Expected
+++ Actual
@@ @@
-2019-03-15T13:38:31+0000
+2019-03-15T08:38:31+0000

Так что мой вопрос - что я делаю не так? Почему sub выводит содержимое всего объекта DateTime? Если эта функция не работает, почему они не устаревают?

--- ОБНОВЛЕНИЕ ---

Та же проблема возникает , а не возникает при добавлении. Это только с саб.

1 Ответ

1 голос
/ 15 марта 2019

Вы можете проверить ссылку Почему я не могу получить доступ к DateTime-> date в PHP-классе DateTime?Это ошибка?

Так что, чтобы решить эту проблему, вы должны получить дату с установкой ее формата, как показано ниже:

$expectedToday = new DateTime();
$expectedToday->sub(new DateInterval('PT5H'));
$this->assertEquals($expectedToday->format('Y-m-d H:i:s'), "2019-03-10 15:15:15");

Надеюсь, это поможет вам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...