Мне нужно отформатировать дату и время из массива php, я получил его от mysql следующим образом:
Array(
[0] => Array
(
[Holidays] => DateTime Object
(
[date] => 2018-01-01 00:00:00.000000
[timezone_type] => 3
[timezone] => Europe/Berlin
)
) )
Но мне нужен такой новый массив:
Array
(
[0] => 2018-12-31
[1] => 2018-12-07
)
Видел такой пост, но у него нет объекта datetime






Попробуйте использовать этот http://php.net/manual/en/datetime.format.php
foreach ($dates as $date) {
echo $date->format('Y-m-d');
}
Всегда используйте английский как внешний справочник; Я редактировал это.
Предполагая, что ваш массив таков:
$array=array("2018-01-01 00:00:00.000000","2018-02-01 06:10:59.000000");
Вы можете попробовать отформатировать свои данные с помощью Date и strtotime
foreach($array as $date){
echo "Date Format: ".Date('Y-m-d',strtotime($date))."<br>";
echo "Datetime Format: ".Date('Y-m-d H:i:s',strtotime($date))."<br>";
}
Надеюсь, это поможет C:
Предполагая, что все элементы в вашем массиве такие, как вы показываете в своем вопросе, вы можете просто использовать array_map для перевода массива. Например:
$a = array(array('Holidays' => new DateTime('2018-01-01', new DateTimeZone('Europe/Berlin'))),
array('Holidays' => new DateTime('2018-01-26', new DateTimeZone('Australia/Sydney'))));
print_r($a);
$a = array_map(function ($v) { return $v['Holidays']->format('Y-m-d'); }, $a);
print_r($a);
Вывод:
Array (
[0] => 2018-01-01
[1] => 2018-01-26
)
Большое вам спасибо, думаю, мне нужно прочитать о карте массивов. Действительно мне это помогло как я хочу.
Вы всегда можете запросить в mysql дату, построенную на основе DATETIME. Я предпочитаю хранить операции с данными в базе данных всякий раз, когда мой ORM и т. д. Делает это возможным; в конце концов, это база данных, и он намного быстрее при операциях с массовыми данными, чем когда-либо будет PHP (игнорируя уменьшение сетевых накладных расходов на отправку данных времени, которые вам не нужны).