Как исправить ошибку date_format () «логическое значение вместо DateTimeInterface»? - PullRequest
0 голосов
/ 31 декабря 2018

Я получаю эту ошибку: «Предупреждение: date_format () ожидает, что параметр 1 будет DateTimeInterface, логическое значение дано в C: ... \ myFile.php в строке 24»

Я пробовал этокод, использующий strtotime вместо time ():

$strDate = time();
$str = strtotime($strDate);
$date = date_create($str);
echo date_format($date, "Y/m/d");

и работает: // -> 2018/12/31

но не могу понять почему, потому что и strtotime, и времявернуть одинаковые метки времени Unix.

$dtObj = date_create(time(), timezone_open("Europe/Oslo"));
echo $dtObj . '</br>'; // Works ok
date_format($dtObj, "d-m-Y"); // This throws error

Я ожидал одинакового результата с обоими кодами.Любая подсказка о том, что происходит?

1 Ответ

0 голосов
/ 31 декабря 2018

date_create() ожидает в качестве первого параметра строку , представляющую дату и время.

Передача числа, как вы делаете ( вы передаете time(), который возвращает метку времени Unix ) приведет к date_create возвращению false, что, конечно, не может быть проанализировано date_format().

. Вы можете прочитать документацию , чтобы увидеть, какстрока данных может быть отформатирована.

Вы можете передать "now", если хотите создать объект DateTime, установленный на текущий момент.

$dtObj = date_create( "now", timezone_open("Europe/Oslo"));
echo date_format($dtObj, "d-m-Y") . "<br>";
...