Нужна дата из массива DateTimeObject

Мне нужно отформатировать дату и время из массива 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

Вы всегда можете запросить в mysql дату, построенную на основе DATETIME. Я предпочитаю хранить операции с данными в базе данных всякий раз, когда мой ORM и т. д. Делает это возможным; в конце концов, это база данных, и он намного быстрее при операциях с массовыми данными, чем когда-либо будет PHP (игнорируя уменьшение сетевых накладных расходов на отправку данных времени, которые вам не нужны).

Daniel Farrell 27.12.2018 23:01
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
1
34
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Попробуйте использовать этот http://php.net/manual/en/datetime.format.php

foreach ($dates as $date) {
 echo $date->format('Y-m-d');
}

Всегда используйте английский как внешний справочник; Я редактировал это.

Funk Forty Niner 27.12.2018 23:38

Предполагая, что ваш массив таков:

$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 
)

Демо на 3v4l.org

Большое вам спасибо, думаю, мне нужно прочитать о карте массивов. Действительно мне это помогло как я хочу.

Victor 28.12.2018 15:53

Другие вопросы по теме