Laravel 5 Carbon格式的日期时间

d3b*_*g3r 30 php laravel php-carbon laravel-5

我有一个返回以下日期时间的数组:

$item['created_at'] => "2015-10-28 19:18:44"
Run Code Online (Sandbox Code Playgroud)

如何M d Y使用Carbon 更改Laravel格式的日期?

目前它返回错误

$suborder['payment_date'] = $item['created_at']->format('M d Y');
Run Code Online (Sandbox Code Playgroud)

Mil*_*jan 32

首先将created_at字段解析为Carbon对象.

$createdAt = Carbon::parse($item['created_at']);
Run Code Online (Sandbox Code Playgroud)

然后你可以使用

$suborder['payment_date'] = $createdAt->format('M d Y');
Run Code Online (Sandbox Code Playgroud)


Sop*_*phy 29

Laravel 5在Model add属性中很容易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'];
}
Run Code Online (Sandbox Code Playgroud)

您可以格式化这样的日期$user->created_at->format('M d Y');或PHP支持的任何格式.


faj*_*hac 7

如果您使用的是雄辩的模型(通过查看代码,我认为您是这样),则无需将其转换为数组。只需将其用作对象即可。因为像托马斯·金一样,默认情况下它是Carbon实例

所以应该

$suborder['payment_date'] = $item->created_at->format('Y-m-d')
Run Code Online (Sandbox Code Playgroud)

但是如果不是这样,则需要将其转换为Carbon对象,如Milan Maharjan回答

$createdAt = Carbon::parse($item['created_at']);
Run Code Online (Sandbox Code Playgroud)


小智 7

在模型中声明:

class ModelName extends Model
{      

 protected $casts = [
    'created_at' => 'datetime:d/m/Y', // Change your format
    'updated_at' => 'datetime:d/m/Y',
];
Run Code Online (Sandbox Code Playgroud)


Tus*_*har 6

Laravel 5 时间戳是 Carbon 类的实例,因此您可以直接对时间戳调用 Carbon 的字符串格式化方法。在你的视图文件中类似这样的东西。

{{$task->created_at->toFormattedDateString()}}
Run Code Online (Sandbox Code Playgroud)

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

  • 这仅适用于添加“created_at”**之后创建的记录,例如通过将“$table->timestamps()”添加到迁移文件,对于其之前的记录,“created_at”将为“NULL”然后这将触发有关非对象调用的方法调用的错误。 (2认同)

li *_*hao 5

试试看:

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


小智 5

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


小智 5

我就是这样做的。它还显示上午/下午。

$user->updated_at->format('M, d Y H:i:s A')
Run Code Online (Sandbox Code Playgroud)