Работа с SQL datetime по умолчанию current_timestamp и форматирование - PullRequest
0 голосов
/ 26 октября 2019

У меня есть столбец в базе данных MySQL, это тип данных DATETIME, по умолчанию это CURRENT_TIMESTAMP. Я пытаюсь использовать функцию PHP date_format(), чтобы отформатировать ее бит, дает мне следующую ошибку

Предупреждение: date_format () ожидает, что параметр 1 будет DateTimeInterface, строка указана в C: \ wamp64 \www \ cms \ CMS_TEMPLATE \ includes \ content.php в строке 26

$stmt = $connect->link->query("SELECT post_date FROM posts");
while($row = $stmt->fetch()){
    $date = $row["post_date"];
    echo date_format($date,'d/F/Y g:i A');
}

Должен ли я использовать другую функцию или это просто синтаксическая ошибка?

Ответы [ 2 ]

1 голос
/ 26 октября 2019

Вы используете функцию, которую не следует использовать отдельно. Лучше оставить процедурные функции стиля, поскольку они часто приводят к путанице и ошибкам, как в вашем примере.

Вам нужно создать объект DateTime и вызвать для него метод format. Это можно сделать одной строкой, используя круглые скобки.

$stmt = $connect->link->query("SELECT post_date FROM posts");
while ($row = $stmt->fetch()) {
    echo (new DateTime($row["post_date"]))->format('d/F/Y g:i A');
}

Как примечание, петля foreach обычно выглядит чище, чем петля while.

$stmt = $connect->link->query("SELECT post_date FROM posts");
foreach ($stmt as $row) {
    echo (new DateTime($row["post_date"]))->format('d/F/Y g:i A');
}
0 голосов
/ 26 октября 2019

В предупреждении говорится, что вы должны использовать DateTime с date_format() (" DateTime реализует DateTimeInterface ")

Изменить

$date = $row["post_date"];

до

$date = new DateTime($row["post_date"]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...