Home > Software engineering >  How to change format of created_at and updated_at in laravel Model?
How to change format of created_at and updated_at in laravel Model?

Time:03-01

In laravel response I want to get values of "created_at" and 'updated_at" like this format (without seconds):

2022-02-22 04:07

I try to use :

protected $casts = [
    'created_at'  => 'datetime:Y-m-d H:i',
    'updated_at' => 'datetime:Y-m-d H:i'
];

But not works, the datetime stills in default format.

CodePudding user response:

You can use something like this:

public function getCreatedAtAttribute($date)
{
    return Carbon::createFromFormat('Y-m-d H:i:s', $date)->format('Y-m-d H:i');
}

public function getUpdatedAtAttribute($date)
{
    return Carbon::createFromFormat('Y-m-d H:i:s', $date)->format('Y-m-d H:i');
}

use these

CodePudding user response:

If your 'created_at' and 'updated_at' fields are date time object or carbon instance you can simply do

 public function getCreatedAtAttribute($date)
  {
    return  $date->format('Y-m-d H:i');
 }

 public function getUpdatedAtAttribute($date)
 {
   return $date->format('Y-m-d H:i');
 }

if its neither date time object nor carbon instance you need to either convert your string to date time instance as @gguney answered .

You can also define the field inside

protected $dates  = [ 'created_at' , 'updated_at'];

Note : The formatted values only reflect while you print the data or dump if the field is inside some array or collection you cannot see the format as these method will be called just before printing the specific field.

  • Related