Intereting Posts
PHP испускает 500 на ошибках – где это документировано? Блокирование запросов, не связанных с AJAX, PHP PHP: переписывание URL-адресов Просмотр и действия модулей внутри вкладок Создание виджета настраиваемых категорий Поставщик: Опубликовать – ничего не публиковать для тега – Только на производственном сервере Удаление каскада Doctrine не работает с OneToMany и OneToOne Как сохранить две базы данных MySQL в синхронизации? Получить определенный узел в xml? Получить UnCommitted данные в MySQL Невозможно получить доступ к моим данным профиля при доступе к API google-people Загрузка нескольких версий одного и того же класса Сценарий PHP, позволяющий пользователям загружать файл с моего сайта, не раскрывая ссылку на файл на моем веб-сайте? Данные таблицы не отображаются с помощью Pagination PHP Получить имя файла из пути и преобразовать символы подчеркивания в пробелы

Объект класса DateTime не может быть преобразован в строку

У меня есть таблица со строковыми значениями в формате пятницы 20 апреля 2012 года в поле под названием Film_Release

Я зацикливаюсь, и я хочу преобразовать их в datetime и развернуть их в другую таблицу. Моя вторая таблица имеет столбец Films_Date с форматом DATE. Я получаю эту ошибку

Объект класса DateTime не может быть преобразован в строку

$dateFromDB = $info['Film_Release']; $newDate = DateTime::createFromFormat("l dS FY",$dateFromDB); //( http:php.net/manual/en/datetime.createfromformat.php) 

Затем я вставляю $ newdate в таблицу через команду insert.

Почему я получаю такую ​​ошибку?

Поскольку $newDate является объектом типа DateTime , а не строкой. Документация ясна:

Возвращает новый объект DateTime отформатированный в соответствии с указанным форматом.

Если вы хотите преобразовать из строки в DateTime обратно в строку, чтобы изменить формат, вызовите DateTime::format в конце, чтобы получить форматированную строку из вашего DateTime .

 $newDate = DateTime::createFromFormat("l dS FY", $dateFromDB); $newDate = $newDate->format('d/m/Y'); // for example 

Попробуй это:

 $Date = $row['valdate']->format('d/m/Y'); // the result will 01/12/2015 

ПРИМЕЧАНИЕ: $row['valdate'] – дата даты в базе данных

Используйте это: $newDate = $dateInDB->format('Ym-d');

Вы пытаетесь вставить $newdate в свой db. Сначала вам нужно преобразовать его в строку. Используйте метод DateTime::format для преобразования обратно в строку.

Убедитесь, что есть дата выпуска фильма; если дата отсутствует, вы не сможете форматировать не-объект.

 if ($info['Film_Release']){ //check if the date exists $dateFromDB = $info['Film_Release']; $newDate = DateTime::createFromFormat("l dS FY", $dateFromDB); $newDate = $newDate->format('d/m/Y'); } else { $newDate = "none"; } 

или

  $newDate = ($info['Film_Release']) ? DateTime::createFromFormat("l dS FY", $info['Film_Release'])->format('d/m/Y'): "none" 

Это своего рода оффтоп, но я пришел сюда из той же ошибки. Для меня эта ошибка появилась, когда я выбирал поле datetime из базы данных mssql и позже использовал его в php-скрипте. как это:

 $SQL="SELECT Created FROM test_table"; $stmt = sqlsrv_query($con, $SQL); if( $stmt === false ) { die( print_r( sqlsrv_errors(), true)); } $Row = sqlsrv_fetch_array($stmt,SQLSRV_FETCH_ASSOC); $SQL="INSERT INTO another_test_table (datetime_field) VALUES ('".$Row['Created']."')"; $stmt = sqlsrv_query($con, $SQL); if( $stmt === false ) { die( print_r( sqlsrv_errors(), true)); } 

оператор INSERT выдавал ошибку: Object of class DateTime could not be converted to string

Я понял, что вы НЕ МОЖЕТЕ просто выбрать дату-время из базы данных:

 SELECT Created FROM test_table 

НО вы должны использовать CONVERT для этого поля:

 SELECT CONVERT(varchar(24),Created) as Created FROM test_table