2

Facebookユーザーオブジェクトからデータをフェッチしている場合、誕生日フィールドの形式はMM / DD/YYYYです。教義を使用するSymfony2では、誕生日フィールドを次のように定義します。

/**
 * @var \Date $birthday
 *
 * @ORM\Column(name="birthday", type="date", nullable=true)
 */
private $birthday;

これはデータベース上でYYYY-DD-MMの形式を生成します。Facebookの形式をsymfonyで使用できる形式にフォーマットしようとしていますが、成功しませんでした。これが私の試みです。

if(isset($fbuser["birthday"]))  {                   //CHECK FOR FIELD birthday
   $date_pz = explode('/',$fbuser["birthday"]);
   // Firts try: $norm_date = array('year' => $date_pz[2], 'month' => $date_pz[0], 'day' => $date_pz[1]);
   // Second try: $norm_date = $date_pz[2] .'-'. $date_pz[0] .'-'. $date_pz[1]);
   $userinfo->setBirthday($norm_date); }

そして私はいつも得ています:

致命的なエラー:44行目の/var/www/vhosts/punctis.com/httpdocs/vendor/doctrine/dbal/lib/Doctrine/DBAL/Types/DateType.phpの非オブジェクトでメンバー関数format()を呼び出す

つまり、私はSymfonyが期待する形式で文字列を送信しないので、ここでの質問は、それをどのようにフォーマットするかということです。

4

3 に答える 3

4

次のような var 出力がある場合:

 echo '<pre>';
 print_r($yourDateTimeObjectVar);die;

//outputs;
DateTime Object
(
  [date] => 2013-12-16 15:17:27
  [timezone_type] => 3
  [timezone] => America/New_York
)

次に、次のことを行うだけです。

echo $yourDateTimeObjectVar->format('d/m/Y');

出力は次のとおりです。

2013/12/16

PS: この場合、オブジェクトは MySql の datetime 列から取得され、次のように挿入されました。

$myOrder = new OrderStatus();
$myOrder->setDateOrder(\new DateTime());
$em->persist($myOrder);
$em->flush()

Var ORM 宣言:

 @ORM\Column(name="DateOrder", type="datetime", nullable=true)
于 2013-12-16T21:05:16.303 に答える
3

Doctrine-TypeDateは aa オブジェクトを期待していDateTimeます。DateTime::createFromFormat()上記のオブジェクトを作成するために使用できます。

エンティティで (たとえば でsetBirthday($birthday)) 行うか、書式設定を行うカスタム DateType を作成します。

于 2013-01-15T16:09:42.300 に答える
1

$userinfo->setBirthday($norm_date)に文字列を渡すのではなく、DateTime オブジェクトを渡す必要があります。

 $userinfo->setBirthday(new \DateTime($norm_date));
 $userinfo->setBirthday(new \DateTime('now'));
 $userinfo->setBirthday(new \DateTime('2013-01-15'));
 $userinfo->setBirthday(new \DateTime('+2 days'), new \DateTimeZone('UCT'));

さまざまな方法でDateTimeオブジェクトを構築できます。こちらのドキュメントを確認してください: http://php.net/manual/en/datetime.construct.php

于 2013-01-15T16:10:08.547 に答える