60

というフィールドに、2012 年 4 月 20 日金曜日の形式の文字列値を含むテーブルがあります。Film_Release

私はループしており、それらを変換しdatetimeて別のテーブルにロールアウトしたいと考えています。2 番目のテーブルには という名前の列が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、挿入コマンドを使用してテーブルに挿入します。

なぜこのようなエラーが発生するのですか?

4

8 に答える 8

84

は文字列ではなく、$newDate型のオブジェクトであるためです。ドキュメントDateTimeは明示的です:

DateTime指定された形式に従ってフォーマットされた新しいオブジェクトを返します。

文字列から文字列に変換して形式を変更する場合は、最後に をDateTime呼び出して、フォーマットされた文字列を から取得します。DateTime::formatDateTime

$newDate = DateTime::createFromFormat("l dS F Y", $dateFromDB);
$newDate = $newDate->format('d/m/Y'); // for example
于 2012-04-18T13:06:12.737 に答える
0

$newdateデータベースに挿入しようとしています。最初に文字列に変換する必要があります。このメソッドを使用DateTime::formatして、文字列に変換し直します。

于 2012-04-18T13:08:15.920 に答える
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" 
于 2015-06-17T00:38:40.337 に答える
0
$Date = $row['Received_date']->format('d/m/Y');

次に、データベースで指定された日付オブジェクトをキャストします

于 2021-01-12T23:01:41.993 に答える