奥丁9
奥丁9
后端
数据库
redis
mysql
mongoDB
达梦
php
laravel
laravel-admin
dcat
表单
表格
java
spring
python
go
c
c++
前端
vue
nodejs
sass/less
html/css
前端框架
javascript
微信生态
公众号
小程序
uniapp
typescript
其他
AI
数据结构
安全
linux
seo
git
健身
算法
正则表达式
docker
待分类
后端
/
php
/
laravel
laravel时间戳转换为更人性化的格式diffForHumans
1年前
aoding9
52
laravel
原文:https://learnku.com/articles/5577/the-diffforhumans-method-of-carbon [Carbon][1] 是继承自 PHP [DateTime 类][2] 的子类,但比后者提供了更加丰富、更加语义化的 API。其中一个比较实用的 API 就是 `diffForHumans` 方法,几乎每个用 Laravel 构建的项目中都有用到它。 [1]: https://github.com/briannesbitt/carbon [2]: http://php.net/manual/en/class.datetime.php 比如,一个博客系统里的文章发布时间,显示格式可能就像下面这样: ``` **距离现在时间** **显示格式** < 1小时 xx分钟前 1小时 - 24小时 xx小时前 1天 - 15天 xx天前 > 15天 直接显示日期 ``` 这种显示方式非常人性化,在 Laravel 中设置它也很方便。 **第一步**:本地化 Carbon。在 `AppServiceProvider` 的 `boot` 方法中添加 `Carbon::setLocale('zh')`。 ``` use Carbon\Carbon; public function boot() { Carbon::setLocale('zh'); } ``` 繁体中文的设置是 `Carbon::setLocale('zh-TW')`,语言配置文件可在 `vendor/nesbot/carbon/src/Carbon/Lang` 文件夹下找到。 **第二步**:在 Model 中设定要人性化显示的字段。以 Article Model 的 `created_at` 字段为例。 ``` use Carbon\Carbon; public function getCreatedAtAttribute($date) { if (Carbon::now() > Carbon::parse($date)->addDays(15)) { return Carbon::parse($date); } return Carbon::parse($date)->diffForHumans(); } ``` 下面就可以直接使用了。 ``` $article->created_at; // 1秒前 ```
本作品采用
《CC 协议》
,转载必须注明作者和本文链接