3分钟短文:Laravel Carbon自定义日期时间格式
引言
laravel引用了强大的Carbon日期时间处理库用于日期时间的操作, 并且在数据库的格式化中使用该库。本文就说一说程序中如何方便地使用 Carbon自定义格式。
学习时间
只要成功安装了laravel的项目,已经内置了标准的carbon库文件,比如说在写入数据库字段 created_at 时是这样的格式:
$item['created_at'] => "2020-08-28 19:18:44"
如果不做格式化,可以手动处理该日期时间,调用carbon的解析函数构造Carbon对象:
$createdAt = Carbon::parse($item['created_at']);
获取到Carbon对象之后,使用格式化函数进行字符串格式化操作。比如说有比较特殊的地区日期格式,就可以使用标准字符串定义:
$suborder['payment_date'] = $createdAt->format('M d Y');
随着laravel的版本更新升级,在模型中逐步引入了更加丰富的特性,比如说 casts 特性, 可以支持对模型数据查询后进行指定的格式化操作,省却了不少繁琐的操作。
在模型中添加以下声明:
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 属性,功效与上面的方式相同:
protected $dates = ['created_at', 'updated_at']
读取的时候,该字段都会返回一个null,或者Carbon对象。比如 User 模型中有下面的代码:
namespace App;
use IlluminateDatabaseEloquentModel;
class User extends Model
{
protected $dates = ['created_at', 'updated_at', 'deleted_at'];
}
那么在使用的时候,手动自定义日期时间格式可使用链式操作:
$user->created_at->format('M d Y');
本质上是 User 模型实例化之后,会根据 $dates 内定义的格式,调用Carbon进行实例化该字段, 那么 $user->created_at 就会返回 Carbon 对象。接着使用Carbon对象的 format 方法,返回自定义的格式就可以了。
在模板中打印默认格式的日期时间字符串,可以这样使用:
{{$user->created_at->toFormattedDateString()}}
写在最后
本文介绍了laravel模型中的 $casts $dates 等特性用于日期时间的格式化,或者转换。本质上还是Carbon对象的方法实现,掌握其灵活的特性方法才是关键。
Happy coding :-)
- 厚土Go学习笔记 | 01. Hello World开篇
- Golang精编100题
- IntelliJ idea配置Go开发环境
- 仰望PHPSHE1.5漏洞
- Golang负载均衡
- 构建Docker镜像两种方式的比较-Dockerfile方式和S2I方式
- Golang单例模式
- 2018,我要Axublog。
- 厚土Go学习笔记 | 16. go语言有指针 没有指针运算
- 嗤!给你来点fiyocms漏洞喷雾
- 厚土Go学习笔记 | 15. defer语句延迟函数的执行
- Nodejs学习笔记(九)--- 与Redis的交互(mranney/node_redis)入门
- Nodejs学习笔记(十)--- 与MongoDB的交互(mongodb/node-mongodb-native)、MongoDB入门
- Golang泛型编程初体验
- php概述
- php教程
- php环境搭建
- PHP书写格式
- php变量
- php常量
- PHP注释
- php数组
- php字符串 string
- PHP整型 integer
- PHP浮点型 float
- php布尔型
- php数据类型之数组
- php数据类型之对象
- php数据类型之null
- php数据类型之间的转换
- php运算符
- php表达式
- PHP循环控制
- PHP流程控制
- php函数
- php全局变量
- PHP魔术变量
- php命名空间
- php 日期
- PHP包含文件
- php文件
- PHP 文件上传
- php Cookies
- php Sessions
- php email
- php安全email
- php错误处理
- PHP异常处理
- php过滤器
- PHP 高级过滤器
- php json
- php 表单
- PHP MySQL 简介
- PHP 连接 MySQL
- php创建数据库
- php 创建表
- php mysq 插入数据
- PHP MySQL 插入多条数据
- PHP MySQL 预处理语句
- php mysql 读取数据
- php mysql where
- PHP MySQL Order By
- PHP MySQL Update
- PHP MySQL Delete
- php ODBC
- 在spring-boot中使用pageHelper插件
- 要深入 JavaScript,你需要掌握这 36 个概念
- mybatis-plus实现增删改查
- mybatis-plus代码生成器
- mybatis-plus逻辑删除
- mybatis-plus一些关键配置
- mybatis-plus自定义sql注入器
- k8s代码走读---kube-controller-manager
- 我们一起学一学渗透测试——黑客应该掌握的HTML基础知识(一)
- 一套漏洞组合拳接管你的账号
- 我们一起学一学渗透测试——黑客应该掌握的HTML基础知识(二)
- 我用Paddle Lite在树莓派3b+上从零开始搭建“实时表情识别”项目
- mybatis-plus:自动填充功能
- 词义类比与全局词共现信息不可兼得?基于飞桨实现的GloVe说可以
- MyBatis-plus乐观锁插件