前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >3分钟短文:Laravel Carbon自定义日期时间格式

3分钟短文:Laravel Carbon自定义日期时间格式

作者头像
程序员小助手
发布2020-09-02 12:59:14
发布2020-09-02 12:59:14
3.6K00
代码可运行
举报
文章被收录于专栏:程序员小助手程序员小助手
运行总次数:0
代码可运行

引言

laravel引用了强大的Carbon日期时间处理库用于日期时间的操作, 并且在数据库的格式化中使用该库。本文就说一说程序中如何方便地使用 Carbon自定义格式。

学习时间

只要成功安装了laravel的项目,已经内置了标准的carbon库文件,比如说在写入数据库字段 created_at 时是这样的格式:

代码语言:javascript
代码运行次数:0
复制
$item['created_at'] => "2020-08-28 19:18:44"

如果不做格式化,可以手动处理该日期时间,调用carbon的解析函数构造Carbon对象:

代码语言:javascript
代码运行次数:0
复制
$createdAt = Carbon::parse($item['created_at']);

获取到Carbon对象之后,使用格式化函数进行字符串格式化操作。比如说有比较特殊的地区日期格式,就可以使用标准字符串定义:

代码语言:javascript
代码运行次数:0
复制
$suborder['payment_date'] = $createdAt->format('M d Y');

随着laravel的版本更新升级,在模型中逐步引入了更加丰富的特性,比如说 casts 特性, 可以支持对模型数据查询后进行指定的格式化操作,省却了不少繁琐的操作。

在模型中添加以下声明:

代码语言:javascript
代码运行次数:0
复制
protected $casts = [
   'created_at' => 'datetime:Y-m-d',
   'updated_at' => 'datetime:Y-m-d',
   'deleted_at' => 'datetime:Y-m-d h:i:s'
];

那么读写的数据都会使用Carbon代用该格式化字符串,对数据进行统一格式。

或者在laravel5中使用 $dates 属性,功效与上面的方式相同:

代码语言:javascript
代码运行次数:0
复制
protected $dates = ['created_at', 'updated_at']

读取的时候,该字段都会返回一个null,或者Carbon对象。比如 User 模型中有下面的代码:

代码语言:javascript
代码运行次数:0
复制
namespace App;

use Illuminate\Database\Eloquent\Model;

class User extends Model
{
   protected $dates = ['created_at', 'updated_at', 'deleted_at'];
}

那么在使用的时候,手动自定义日期时间格式可使用链式操作:

代码语言:javascript
代码运行次数:0
复制
$user->created_at->format('M d Y');

本质上是 User 模型实例化之后,会根据 $dates 内定义的格式,调用Carbon进行实例化该字段, 那么 $user->created_at 就会返回 Carbon 对象。接着使用Carbon对象的 format 方法,返回自定义的格式就可以了。

在模板中打印默认格式的日期时间字符串,可以这样使用:

代码语言:javascript
代码运行次数:0
复制
{{$user->created_at->toFormattedDateString()}}

写在最后

本文介绍了laravel模型中的 $casts $dates 等特性用于日期时间的格式化,或者转换。本质上还是Carbon对象的方法实现,掌握其灵活的特性方法才是关键。

Happy coding :-)

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员小助手 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 学习时间
  • 写在最后
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档