我有一个数组,其返回以下日期时间:
$item['created_at'] => "2015-10-28 19:18:44"
如何在使用Carbon的Laravel中将日期更改为M d Y
格式?
目前它返回一个错误
$suborder['payment_date'] = $item['created_at']->format('M d Y');
我有一个数组,其返回以下日期时间:
$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 6.x和7.x的日期转换
/**
* The attributes that should be cast.
*
* @var array
*/
protected $casts = [
'created_at' => 'datetime:Y-m-d',
'updated_at' => 'datetime:Y-m-d',
'deleted_at' => 'datetime:Y-m-d h:i:s'
];
在 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 支持的任何格式。
'date_confirmation' => string '-0001-11-30 00:00:00' (length=20)
。您知道为什么会这样做以及如何解决它吗? - Marc PontCarbon\Carbon
属性都以相同的方式进行格式化(我已经使用了 protected $dates = ['my_date_at'];
). - Roland$suborder['payment_date'] = Carbon::parse($item['created_at'])->format('M d Y');
Payment->created_at
被重命名为 payment_date
,不再直接使用 Payment
类(Eloquent 模型),只允许使用 array $item
作为类型提示。这可能不是您想要的? - Roland$suborder['payment_date'] = $item->created_at->format('Y-m-d')
但如果不是,您需要将其转换为Carbon对象,就像Milan Maharjan的答案一样。
$createdAt = Carbon::parse($item['created_at']);
Payment $payment
的好处在于,无需将其转换为数组,您可以始终在Blade模板中直接使用Eloquent模型对象。但是我仍然希望不要将created_at
重命名为payment_date
。 - Roland在模型中声明:
class ModelName extends Model
{
protected $casts = [
'created_at' => 'datetime:d/m/Y', // Change your format
'updated_at' => 'datetime:d/m/Y',
];
created_at
和 updated_at
,在您的 Model
中不需要 protected $dates = [];
。但如果您有像我一样的自定义列,则必须将其添加到该数组中,并且不要将 protected $timestamps = true;
添加到您的模型中,因为这是默认设置。 - Roland{{$task->created_at->toFormattedDateString()}}
created_at
之后创建的记录,例如通过将$table->timestamps()
添加到迁移文件中。对于它之前的记录,created_at
将为NULL
,然后这将触发有关非对象调用的方法调用的错误。 - Roland这是我的做法。它还显示了AM/PM。
$user->updated_at->format('M, d Y H:i:s A')
尝试以下操作:
$createdAt = Carbon::parse(date_format($item['created_at'],'d/m/Y H:i:s');
$createdAt= $createdAt->format('M d Y');
protected $timestamps = false;
,则 created_at
会自动转换为 Carbon\Carbon
。您还需要在迁移文件中添加 $table->timestamps();
。 - Roland只需使用
Carbon::createFromFormat('Y-m-d H:i:s', $item['created_at'])->format('M d Y');
如果你正在使用Eloquent,只需要使用以下内容:
$order->created_at->format('D, M d, Y h:i A')
注意:请编辑您自己的格式。
created_at
不包含 Carbon 对象的实例。 - Jeemusucreated_at
重命名为payment_date
?只需直接在您的 Blade 模板中使用$payment->created_at
即可。 - Roland$table->timestamps()
时会自动创建。另外,不应该手动设置它。 - Roland$table->timestamps();
在已经存在数据的情况下使用时,可能会出现这种情况。然后可以使用“helper”函数来处理null
值,例如function formatCarbon (Carbon $carbon = null) : string { ... }
。 - Roland