Object van klasse DateTime kan niet worden geconverteerd naar string

Ik heb een tabel met tekenreekswaarden in de indeling vrijdag 20 april 2012in een veld met de naam Film_Release

Ik ben aan het doorlopen en ik wil ze omzetten in DateTimeen ze uitrollen naar een andere tabel. Mijn tweede tabel heeft een kolom met de naam Films_Date, met de indeling DATE. Ik ontvang deze foutmelding

Object van klasse DateTime kan niet worden geconverteerd naar tekenreeks

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

Vervolgens voeg ik $newdatein de tabel in via een insert-commando.

Waarom krijg ik zo’n foutmelding?


Antwoord 1, autoriteit 100%

Omdat $newdateeen object van het type DateTimeis, geen string. De documentatieis expliciet:

Retourneert een nieuw DateTime-object geformatteerd volgens de opgegeven
formaat.

Als je een string naar DateTimeterug wilt converteren naar een string om het formaat te wijzigen, bel dan DateTime::formataan het einde om een opgemaakte string uit uw DateTimete halen.

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

Antwoord 2, autoriteit 24%

Probeer dit:

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

OPMERKING: $row['valdate']het is een valutadatum in de database


Antwoord 3, autoriteit 5%

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


Antwoord 4

Als u Twig-sjablonen voor Symfony gebruikt, kunt u de klassieke {{object.date_attribute.format('d/m/Y')}}gebruiken om de gewenste opgemaakte datum te verkrijgen.


Antwoord 5

Je probeert $newdatein te voegen in je database. Je moet het eerst naar een string converteren. Gebruik de DateTime::formatmethode om terug te converteren naar een string.


Antwoord 6

Controleer of er een releasedatum voor de film is; als de datum ontbreekt, kunt u niet formatteren op een niet-object.

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"; 
}

of

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

Antwoord 7

Het is een beetje offtopic, maar ik kom hier na het googlen van dezelfde fout.
Voor mij verscheen deze fout toen ik het datetime-veld uit de mssql-database selecteerde en het later in php-script gebruikte.
zoals dit:

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

de INSERT-instructie gaf een fout: Object of class DateTime could not be converted to string

Ik realiseerde me dat je KAN NIETgewoon de datetime uit de database selecteren:

SELECT Created FROM test_table

MAARje moet CONVERT gebruiken voor dit veld:

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

Antwoord 8

$Date = $row['Received_date']->format('d/m/Y');

vervolgens cast het datumobject van gegeven in de database

Other episodes