У меня есть следующий код, из которого я хочу получить даты из db. Код выводит незавершенный список, но в другом формате даты.

$array = $stmt->fetchAll(PDO::FETCH_COLUMN);
$dates = implode("\n",$array);
return $dates;

Результат:

2021-05-26
2021-05-27
2021-05-28
2021-05-29
2021-05-30

Мне нужен такой формат: м / д / г

Я пробовал это:

`$array = $stmt->fetchAll(PDO::FETCH_COLUMN);

$ date = implode ("\ n", $ array); $ newDate = date ("м / д / г", strtotime ($ates)); return $ newDate; `

Но результат всего лишь один результат и неверен:

01.01.70

Формат изменен, но я потерял правильные даты

Заранее спасибо.

0
Fabrizio 8 Июн 2021 в 16:02

3 ответа

Лучший ответ

Используйте функцию mysql DATE_FORMAT в своем SELECT, и вам не нужно ее переформатировать.

SELECT DATE_FORMAT('2021-05-26','%m/%d/%Y')
| DATE_FORMAT('2021-05-26','%m/%d/%Y') |
| :----------------------------------- |
| 05/26/2021                           |

db <> fiddle здесь

В своем запросе вы используете его как рекламируемое и заменяете дату столбцом

SELECT  DATE_FORMAT(`date`,'%m/%d/%Y') FROM reservations WHERE object_id IN (select id from rooms WHERE sub_id='$value')

Ваш код уязвим для внедрения sql , поэтому используйте подготовленные операторы с параметрами , см. Как предотвратить SQL-инъекцию в PHP?

0
nbk 8 Июн 2021 в 13:55

Вы можете использовать array_map для применения обратного вызова ко всем элементам массива. С помощью функции strtotime и date вы можете изменить формат ваших дат. Документация на php.net

$array = $stmt->fetchAll(PDO::FETCH_COLUMN);
$dates = array_map(function($element) {
    return date("Ymd", $element);
}, $dates);
$dates = implode("\n",$array);
return $dates;
0
D B 8 Июн 2021 в 13:06

Самый простой способ - превратить их в объекты DateTime, а затем использовать формат для получения желаемого результата. Так что-то вроде:

$date = "2021-05-26";

$DT = DateTime::createFromFormat("Y-m-d", $date);
echo $DT -> format("m/d/Y");

Этот метод также дает вам возможность выполнять другие преобразования и / или изменять время и т. Д.

DateTime создать из документов формата

Документы формата DateTime

0
Jamie Robinson 8 Июн 2021 в 13:11