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 相关文章推荐
PHP 加密解密内部算法
Apr 22 PHP
PHP网站安装程序制作的原理、步骤、注意事项和示例代码
Aug 01 PHP
PHP在特殊字符前加斜杠的实现代码
Jul 17 PHP
不支持fsockopen但支持culr环境下下ucenter与modoer通讯问题
Aug 12 PHP
PHP中几个常用的魔术常量
Feb 23 PHP
php 的加密函数 md5,crypt,base64_encode 等使用介绍
Apr 09 PHP
php错误级别的设置方法
Jun 17 PHP
php实现cookie加密的方法
Mar 10 PHP
CodeIgniter配置之autoload.php自动加载用法分析
Jan 20 PHP
PHP引用返回用法示例
May 28 PHP
Yii 2.0中场景的使用教程
Jun 02 PHP
CodeIgniter框架钩子机制实现方法【hooks类】
Aug 21 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实现下载生成某链接快捷方式的解决方法
2013/05/07 PHP
关于使用key/value数据库redis和TTSERVER的心得体会
2013/06/28 PHP
thinkphp路由规则使用示例详解和伪静态功能实现(apache重写)
2014/02/24 PHP
jQuery 连续列表实现代码
2009/12/21 Javascript
jquery each()源代码
2011/02/14 Javascript
Uglifyjs(JS代码优化工具)入门 安装使用
2020/04/13 Javascript
javascript中获取下个月一号,是星期几
2012/06/01 Javascript
js onload处理html页面加载之后的事件
2013/10/30 Javascript
Javascript学习笔记之 对象篇(四) : for in 循环
2014/06/24 Javascript
使用AngularJS处理单选框和复选框的简单方法
2015/06/19 Javascript
js实现具有高亮显示效果的多级菜单代码
2015/09/01 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
AngularJS 限定$scope的范围实例详解
2017/06/23 Javascript
深入解析nodejs HTTP服务
2017/07/25 NodeJs
JavaScript中引用vs复制示例详析
2018/12/06 Javascript
Angular2 自定义表单验证器的实现方法
2018/12/14 Javascript
Vue.js中的组件系统
2019/05/30 Javascript
Nodejs监控事件循环异常示例详解
2019/09/22 NodeJs
vue之组件内监控$store中定义变量的变化详解
2019/11/08 Javascript
Vue props中Object和Array设置默认值操作
2020/07/30 Javascript
[01:30]我们共输赢 完美世界城市挑战赛开启全新赛季
2019/04/19 DOTA
[01:11:28]DOTA2-DPC中国联赛定级赛 RNG vs Phoenix BO3第一场 1月8日
2021/03/11 DOTA
Python3实现将文件归档到zip文件及从zip文件中读取数据的方法
2015/05/22 Python
python使用win32com库播放mp3文件的方法
2015/05/30 Python
Python中查看文件名和文件路径
2017/03/31 Python
python使用邻接矩阵构造图代码示例
2017/11/10 Python
python实现名片管理系统
2018/11/29 Python
对Python正则匹配IP、Url、Mail的方法详解
2018/12/25 Python
python对象转字典的两种实现方式示例
2019/11/07 Python
银行实习生的自我评价
2013/12/09 职场文书
《一株紫丁香》教学反思
2014/02/19 职场文书
财务部总监岗位职责
2014/03/12 职场文书
农民工讨薪标语
2014/06/26 职场文书
创业计划书之牛肉汤快餐店
2019/10/08 职场文书
python神经网络编程之手写数字识别
2021/05/08 Python
Python卷积神经网络图片分类框架详解分析
2021/11/07 Python