次の日付時刻を返す配列があります。
$item['created_at'] => "2015-10-28 19:18:44"
Carbonを使用して、日付をLaravelのM d Y
形式に変更するにはどうすればよいですか?
現在、エラーを返します
$suborder['payment_date'] = $item['created_at']->format('M d Y');
最初にcreated_atフィールドをCarbonオブジェクトとして解析します。
$createdAt = Carbon::parse($item['created_at']);
その後、使用することができます
$suborder['payment_date'] = $createdAt->format('M d Y');
モデルのLaravel 5プロパティprotected $dates = ['created_at', 'cached_at']
を追加するのは簡単です。詳細はこちらをご覧ください https://laravel.com/docs/5.2/eloquent-mutators#date-mutators
例:
namespace App;
use Illuminate\Database\Eloquent\Model;
class User extends Model
{
/**
* The attributes that should be mutated to dates.
*
* @var array
*/
protected $dates = ['created_at', 'updated_at', 'deleted_at'];
}
この$user->created_at->format('M d Y');
またはPHPがサポートする任意の形式のように日付をフォーマットできます。
雄弁なモデルを使用している場合(コードを見ると、あなたがいると思います)、それを配列に変換する必要はありません。オブジェクトとして使用するだけです。トーマス・キムが言ったように、デフォルトではCarbonインスタンスだから
だからそれは
$suborder['payment_date'] = $item->created_at->format('Y-m-d')
しかし、そうでない場合は、Milan Maharjanの回答としてCarbonオブジェクトに変換する必要があります
$createdAt = Carbon::parse($item['created_at']);
Laravel 5タイムスタンプはCarbonクラスのインスタンスであるため、タイムスタンプでCarbonの文字列フォーマットメソッドを直接呼び出すことができます。ビューファイル内のこのようなもの。
{{$task->created_at->toFormattedDateString()}}
モデルで宣言:
class ModelName extends Model
{
protected $casts = [
'created_at' => 'datetime:d/m/Y', // Change your format
'updated_at' => 'datetime:d/m/Y',
];
$suborder['payment_date'] = Carbon::parse($item['created_at'])->format('M d Y');
それを試してください:
$createdAt = Carbon::parse(date_format($item['created_at'],'d/m/Y H:i:s');
$createdAt= $createdAt->format('M d Y');