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

36

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

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

Object of class DateTime could not be converted to string

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

Затем я вставляю $ newdate в таблицу с помощью команды вставки.

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

Ваш Ответ

6   ответов
62

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

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

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

$newDate = DateTime::createFromFormat("l dS F Y", $dateFromDB);
$newDate = $newDate->format('d/m/Y'); // for example
Привет, я попытался, и я получаю эту ошибку - вызов функции-члена format () для необъекта DIM3NSION
@ DIM3NSION: невозможно с кодом выше, еслиcreateFromFormat не возвращает объект, что означает, что он вернулfalse потому что ввод был неверным. Читатьдокументаци и исправить ввод. Jon
Какой тип поля я бы использовал, чтобы вставить новую дату в $? у меня это работает сейчас DIM3NSION
0

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

hi, я пытался использовать формат, но получил сообщение об ошибке - вызов функции-члена format () для необъекта DIM3NSION
3

$newDate = $dateInDB->format('Y-m-d');

13

Попробуй это

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

НОТА:$row['valdate'] дата валютирования в базе данных

Это решает проблему DiChrist
0

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

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" 
0

но я пришел сюда из-за той же ошибки. Для меня эта ошибка появилась, когда я выбирал поле 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

Я понял, что ты CAN NOT просто выберите дату и время из базы данных:

SELECT Created FROM test_table

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

SELECT CONVERT(varchar(24),Created) as Created FROM test_table
Используйте параметры, Кенни, они там для этого и будут волшебным образом преобразованы из объектов \ DateTimesqlsrv_query($con, "INSERT INTO tablename (dtfield) VALUES(?)", array($datetime)) GDmac

Похожие вопросы