Laravel中七个非常有用但很少人知道的Carbon方法


Posted in PHP onSeptember 21, 2017

前言

大家应该都知道,我们在很多时候使用 Carbon 来处理日期和时间,对吗?但是又有多少人完整的阅读过文档了解它有那些方法呢?除了众所周知的 now() 和 format() 方法,Carbon 还有很多其他有用的方法。

下面我们一起来看看吧。

1. isX: True/False

有很多方法来判断 Carbon 对象是否是今天、周末、闰年等等,下面这些是官方文档列出来的:

<?php
$dt->isWeekday();
$dt->isWeekend();
$dt->isYesterday();
$dt->isToday();
$dt->isTomorrow();
$dt->isFuture();
$dt->isPast();
$dt->isLeapYear();
$dt->isSameDay(Carbon::now());

2. isBirthday

除了上面的列表,Carbon 还有一个方法来判断日期是否是某个人的生日。除了单开校验月和日外,你还可以这么做:

$born = Carbon::createFromDate(1987, 4, 23);
$noCake = Carbon::createFromDate(2014, 9, 26);
$yesCake = Carbon::createFromDate(2014, 4, 23);
var_dump($born->isBirthday($noCake));  // bool(false)
var_dump($born->isBirthday($yesCake));

3. StartOfX 和 EndOfX 列表

下面是 startOfX 系列和 endOfX 系列:

$dt = Carbon::create(2012, 1, 31, 12, 0, 0);
echo $dt->startOfDay(); // 2012-01-31 00:00:00
echo $dt->endOfDay(); // 2012-01-31 23:59:59
echo $dt->startOfMonth(); // 2012-01-01 00:00:00
echo $dt->endOfMonth(); // 2012-01-31 23:59:59
echo $dt->startOfYear(); // 2012-01-01 00:00:00
echo $dt->endOfYear(); // 2012-12-31 23:59:59
echo $dt->startOfDecade(); // 2010-01-01 00:00:00
echo $dt->endOfDecade(); // 2019-12-31 23:59:59
echo $dt->startOfCentury(); // 2000-01-01 00:00:00
echo $dt->endOfCentury(); // 2099-12-31 23:59:59
echo $dt->startOfWeek(); // 2012-01-30 00:00:00
echo $dt->endOfWeek(); // 2012-02-05 23:59:59

4. Today, Tomorrow, Yesterday

三个简单却非常有用的方法,不需要调用 now(),然后替换掉时分秒,然后增加或者减去天数:

$today = Carbon::today(); // assuming 2016-06-24
echo $today;        // 2016-06-24 00:00:00
$tomorrow = Carbon::tomorrow();
echo $tomorrow;       // 2016-06-25 00:00:00
$yesterday = Carbon::yesterday();
echo $yesterday;       // 2016-06-23 00:00:00

5. DiffForHumans + 本地化

你可能用过这个叫做 diffForHumans() 的方法 ? 它会以一个便于人们阅读的方法返回两个日期之间的不同:

echo Carbon::now()->subDays(5)->diffForHumans(); // 5 days ago

但是你知道它也可以本地化吗?只需要改变地点即可,如汉语:

Carbon::setLocale('zh');
echo Carbon::now()->addYear()->diffForHumans(); // 一年前

6. 改变 now() 为任意你想要的时间

$knownDate = Carbon::create(2001, 5, 21, 12); // 创建测试日期
Carbon::setTestNow($knownDate);      // set the mock 
echo Carbon::now();         // 2001-05-21 12:00:00

7. 星期常量

可以通过下面的常量来代替一周中的第几天:

var_dump(Carbon::SUNDAY);       // int(0)
var_dump(Carbon::MONDAY);       // int(1)
var_dump(Carbon::TUESDAY);       // int(2)
var_dump(Carbon::WEDNESDAY);      // int(3)
var_dump(Carbon::THURSDAY);      // int(4)
var_dump(Carbon::FRIDAY);       // int(5)
var_dump(Carbon::SATURDAY);      // int(6)

上面提到的这些有用的方法你都了解吗?可以在留言种列出你觉得有用的方法。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

PHP 相关文章推荐
C# Assembly类访问程序集信息
Jun 13 PHP
phpMyAdmin出现无法载入 mcrypt 扩展,请检查PHP配置的解决方法
Mar 26 PHP
PHP中如何定义和使用常量
Feb 28 PHP
Laravel框架学习笔记(二)项目实战之模型(Models)
Oct 15 PHP
在PHP站点的页面上添加Facebook评论插件的实例教程
Jan 08 PHP
php版微信公众账号第三方管理工具开发简明教程
Sep 23 PHP
thinkPHP框架动态配置用法实例分析
Jun 14 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
Dec 08 PHP
php实现 master-worker 守护多进程模式的实例代码
Jul 20 PHP
Laravel框架Auth用户认证操作实例分析
Sep 29 PHP
laravel实现上传图片的两种方式小结
Oct 12 PHP
Laravel 修改默认日志文件名称和位置的例子
Oct 17 PHP
如何通过View::first使用Laravel Blade的动态模板详解
Sep 21 #PHP
基于Laravel实现的用户动态模块开发
Sep 21 #PHP
PHP调用API接口实现天气查询功能的示例
Sep 21 #PHP
PHP判断json格式是否正确的实现代码
Sep 20 #PHP
Yii2.0使用阿里云OSS的SDK上传图片、下载、删除图片示例
Sep 20 #PHP
PHP文件管理之实现网盘及压缩包的功能操作
Sep 20 #PHP
PHP使用Nginx实现反向代理
Sep 20 #PHP
You might like
使用PHP数组实现无限分类,不使用数据库,不使用递归.
2006/12/09 PHP
PHP 文件上传功能实现代码
2009/06/24 PHP
Laravel重定向,a链接跳转,控制器跳转示例
2019/10/22 PHP
网页自动刷新,不产生嗒嗒声的一个解决方法
2007/03/27 Javascript
javascript 定义新对象方法
2010/02/20 Javascript
javascipt匹配单行和多行注释的正则表达式
2013/11/20 Javascript
jquery动态加载select下拉框示例代码
2013/12/10 Javascript
深入理解javascript中defer的作用
2013/12/11 Javascript
在Firefox下js select标签点击无法弹出
2014/03/06 Javascript
JavaScript检查某个function是否是原生代码的方法
2014/08/20 Javascript
javascript实现校验文件上传控件实例
2015/04/20 Javascript
jQuery Validate验证框架经典大全
2015/09/23 Javascript
jquery+ajax+text文本框实现智能提示完整实例
2016/07/09 Javascript
js注入 黑客之路必备!
2016/09/14 Javascript
前端主流框架vue学习笔记第二篇
2017/07/26 Javascript
JS实现图片手风琴效果
2020/04/17 Javascript
switchery按钮的使用方法
2017/12/18 Javascript
在react-router4中进行代码拆分的方法(基于webpack)
2018/03/08 Javascript
详解微信小程序实现WebSocket心跳重连
2018/07/31 Javascript
全面分析JavaScript 继承
2019/05/30 Javascript
JavaScript实现移动小精灵的案例代码
2020/12/12 Javascript
python实现机器人行走效果
2018/01/29 Python
Python获取CPU、内存使用率以及网络使用状态代码
2018/02/08 Python
Python实现获取邮箱内容并解析的方法示例
2018/06/16 Python
python画双y轴图像的示例代码
2019/07/07 Python
python datetime中strptime用法详解
2019/08/29 Python
PyTorch中的Variable变量详解
2020/01/07 Python
Python使用Numpy模块读取文件并绘制图片
2020/05/13 Python
Keras 中Leaky ReLU等高级激活函数的用法
2020/07/05 Python
python实现AHP算法的方法实例(层次分析法)
2020/09/09 Python
CSS3按钮鼠标悬浮实现光圈效果源码
2016/09/11 HTML / CSS
工厂仓管员岗位职责
2014/01/01 职场文书
工作自我评价怎么写
2014/01/29 职场文书
2014单位领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
法学专业毕业实习自我鉴定2014
2014/09/27 职场文书
Golang 获取文件md5校验的方法以及效率对比
2021/05/08 Golang