2016-08-11 21 views
0

私は次の日付時刻を返す配列があります。laravel 5形式のdatetime

$item['created_at'] => "2015-10-28 19:18:44" 

そして、私はこのoutuputが必要になります。

"2016-08-10T13:15:00.000+10:00" 

は、この日付を変換するために、任意の関数を存在し?

+0

を見てみましょうか、それはカーボン/ DateTimeオブジェクトを返すのですか? –

+2

laravelはデフォルトで[Carbon](http://carbon.nesbot.com/docs/)に同梱されているので、それを使うことができます。たとえそれが文字列かCarbon/DateTimeオブジェクトであっても。 – Andrew

+2

しかし、「2015-10-28 19:18:44」から「2016-08-10T13:15:00.000 + 10:00」までの日付を再フォーマットするだけではなく、何日/ /年/時/分/秒で調整していますか?そしてその変化のためのルールは何ですか? –

答えて

1

これを試してみてください:

$dt = new \DateTime('2015-10-28 19:18:44', new \DateTimeZone('Europe/London')); 
dd($dt->format('c')); // string '2015-10-28T19:18:44+00:00' (length=25) 

はまた、それが実際にそのような文字列を返すんCarbon

0

Laravelのアクセサを使用して、「再フォーマット済み」created_atを取得できます。

public function getCreatedAtAttribute($value) 
{ 
    //Since Laravel uses Carbon you can do. 
    return $value->format('c'); 
} 

この方法でいつでもあなたはそれがcreated_atを修正返します$model->created_atような何かを。

created_atの日時フォーマットをデータベースでも変更したい場合は、ミューテータを使用できます。

詳細については、Laravel's docs pageをご覧ください。

+1

私は、IDのようなLaravelの魔法の列名にアクセサーを付けて、作成/更新/削除することに注意します。これは、 'getFormattedCreatedAtAttribute'や' formatted_created_at'のような別の名前を与える方が良いでしょう。 – ceejayoz

+0

@ceejayoz何が起こる可能性がありますか? –

+0

私はここで野生の推測を行い、その値で動作するためにある種の魔法を使うと仮定します。もう一度、create/update/etcのような言葉が "予約済み"であると仮定しよう。そして、魔法のデバッグはフォークで自分自身を殺すのと同じだから、それを回避する方が良い。 – Andrew