Подтвердить что ты не робот

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

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

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

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

Попробуйте следующее:

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

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

Ответ 3

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

Ответ 4

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

Ответ 5

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

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

или

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

Ответ 6

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

$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