'Laravel format DateTime from database result

My database stores two dates in the mysql DateTime format YYYY-MM-DD HH:MM:SS. When I get this data (with other strings etc), I want to convert it to another format, maybe DD.MM.YYYY HH:MM:SS and display it on my view in a table cell. My database dates are called date_begin and date_end.

Better, when I get this dates from database, convert it to DD.MM.YYYY format, separate the date and the time, store the time in a custom string ("HH1:MM1 - HH2:MM2") and bring both on my view.

How can I achieve this? I found some examples to convert on the view, not in the controller, but I think this is not good for MVC.



Solution 1:[1]

I have used the PHP solution without Carbon:

Get the database date as you do (with the default format: YYYY-MM-DD HH:MM:SS) and when you print it on your view replace $item->date_begin to:

date('d-m-Y H:i:s', strtotime($item->date_begin))

After that, when you save it on the database add on the DB update:

date('Y-m-d H:i:s', strtotime($request->date_begin))

Solution 2:[2]

// attributes that should be cast to native types

 protected $casts = [
        'email_verified_at' => 'datetime'
    ];


// get formatted datetime string for email_verified_at

public function getEmailVerifiedAttribute()
 {
        if ($this->email_verified_at) {
            $date = Carbon::createFromFormat('Y-m-d H:i:s', $this->email_verified_at, 'UTC');
            return $date->setTimezone($this->timezone->name)->isoFormat('LLLL');
        } else {
            return null;
        }
    }

as Laravel document way.

Solution 3:[3]

protected $casts = [
         'inicio'  => 'datetime:Y-m-d\TH:i'
        ,'entrega'  => 'datetime:Y-m-d\TH:i'
   ];

you could use it for the datetime-local field. greed you.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1
Solution 2 fahdshaykh
Solution 3 Carlos