Laravel 5 Дата и время в формате Carbon

У меня есть массив, который возвращает следующую дату и время:

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

Как мне изменить дату на формат M d Y в Laravel, используя Carbon?

В настоящее время возвращается с ошибкой

$suborder['payment_date'] = $item['created_at']->format('M d Y');

Ответ 1

Легко для 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.

Ответ 2

Сначала проанализируйте поле created_at как объект Carbon.

$createdAt = Carbon::parse($item['created_at']);

Затем вы можете использовать

$suborder['payment_date'] = $createdAt->format('M d Y');

Ответ 3

Если вы используете красноречивую модель (глядя на ваш код, я думаю, что вы есть), вам не нужно преобразовывать его в массив. Просто используйте его как объект. Becaus elike Томас Ким сказал, что по умолчанию это экземпляр Carbon

Так что это должно быть

$suborder['payment_date'] = $item->created_at->format('Y-m-d')

Но если это не так, вам нужно преобразовать его в объект Carbon, как ответ Милана Махарджана

$createdAt = Carbon::parse($item['created_at']);

Ответ 4

Временные метки Laravel 5 являются экземплярами класса Carbon, поэтому вы можете напрямую называть метод форматирования строки Carbon на своих временных отметках. Что-то вроде этого в вашем файле вида.

{{$task->created_at->toFormattedDateString()}}

http://carbon.nesbot.com/docs/#api-formatting

Ответ 5

Объявить в модели:

class ModelName extends Model
{      

 protected $casts = [
    'created_at' => 'datetime:d/m/Y', // Change your format
    'updated_at' => 'datetime:d/m/Y',
];

Ответ 6

$suborder['payment_date'] = Carbon::parse($item['created_at'])->format('M d Y');

Ответ 7

Попробуй это:

$createdAt = Carbon::parse(date_format($item['created_at'],'d/m/Y H:i:s');
$createdAt= $createdAt->format('M d Y');