7

このエラー メッセージを取り除くことができません。

非オブジェクトでメンバー関数 format() を呼び出す

それで、私はグーグルを続けて、この StackOverflow questionのような良いソースを手に入れました。

私は似たようなことをしようとしましたが、失敗しました。これは私のコードです:

$temp = new DateTime();
/*ERROR HERE*/ $data_umat['tanggal_lahir'] = $data_umat['tanggal_lahir']->format('Y-m-d');
$data_umat['tanggal_lahir'] = $temp;

それで、私は試行錯誤をしました、そして私がこれをするかどうかわかりました:

$data_umat['tanggal_lahir'] = date("Y-m-d H:i:s");

日付は正常に変換されますが、常に今日の日付が返されます (これは望ましくありません)。

10/22/2013になるように日付を変換したい2013-10-22

4

7 に答える 7

3

strtotime() を使用してこれを変換できます。指定された日付をタイムスタンプに変換し、date() 関数を使用して、タイムスタンプを目的の日付形式に変換できます。

これを試して..

$date = '10/22/2013';
$timestamp = strtotime($date);
$new_date = date('Y-m-d',$timestamp );
于 2013-10-07T08:47:47.777 に答える
1

Doctrine で Symfony または Slim を使用する場合は、これを試してください:

//form[誕生日 = "2000-12-08"]

[...]

$birthday = \DateTime::createFromFormat("Y-m-d",$formData['birthday']);

$obejct = new $object();
$object->setBirthday($birthday);

[...]

于 2016-06-17T01:16:16.603 に答える
-2

Symfony を使用しているときにこの問題が発生した場合は、次のハックを試してください。

開く: Symfony ルート/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateTimeType.php

convertToDatabaseValue()関数が宣言されている 50 行目に移動します。

元のコード:

return ($value !== null)
        ? $value->format($platform->getDateTimeFormatString()) : null;

への変更:

 return ($value !== null)
            ? $value : null;

文字列を日付文字列として渡すときに、Symfony が余分な変換を行っているようです。

DateTime オブジェクトを直接渡すと、「オブジェクト DateTime を文字列に変換できません」という別のエラーが表示されるため、機能しません。

于 2014-01-29T10:45:30.690 に答える