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 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
Dec 07 PHP
php魔术方法与魔术变量、内置方法与内置变量的深入分析
Jun 03 PHP
关于PHP内存溢出问题的解决方法
Jun 25 PHP
PHP实现的简单mock json脚本分享
Feb 10 PHP
php把数组值转换成键的方法
Jul 13 PHP
php获取图片信息的方法详解
Dec 10 PHP
利用PHP将图片转换成base64编码的实现方法
Sep 13 PHP
php 解析xml 的四种方法详细介绍
Oct 26 PHP
PHP使用SOAP调用API操作示例
Dec 25 PHP
Yii框架使用PHPExcel导出Excel文件的方法分析【改进版】
Jul 24 PHP
解决php扩展安装不生效问题
Oct 25 PHP
PHP基于openssl实现非对称加密代码实例
Jun 19 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
弹出模态框modal的实现方法及实例
Sep 19 #PHP
You might like
zend框架实现支持sql server的操作方法
2016/12/08 PHP
PHP中Trait及其应用详解
2017/02/14 PHP
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
2007/05/08 Javascript
使用jquery自定义鼠标样式满足个性需求
2013/11/05 Javascript
JS返回iframe中frameBorder属性值的方法
2015/04/01 Javascript
javascript使用shift+click实现选择和反选checkbox的方法
2015/05/04 Javascript
jquery实现的点击翻书效果代码
2015/11/04 Javascript
MVC Ajax Helper或Jquery异步加载部分视图
2015/11/29 Javascript
理解JavaScript事件对象
2016/01/25 Javascript
jquery 抽奖小程序实现代码
2016/10/12 Javascript
jquery  实现轮播图详解及实例代码
2016/10/12 Javascript
Bootstrap模态框案例解析
2017/03/05 Javascript
jQuery层级选择器_动力节点节点Java学院整理
2017/07/04 jQuery
微信小程序之电影影评小程序制作代码
2017/08/03 Javascript
react-redux中connect的装饰器用法@connect详解
2018/01/13 Javascript
jquery ajax加载数据前台渲染方式 不用for遍历的方法
2018/08/09 jQuery
chosen实现省市区三级联动
2018/08/16 Javascript
基于JS实现计算24点算法代码实例解析
2020/07/23 Javascript
vue element-ul实现展开和收起功能的实例代码
2020/11/25 Vue.js
python操作mysql中文显示乱码的解决方法
2014/10/11 Python
python 采集中文乱码问题的完美解决方法
2016/09/27 Python
python使用正则表达式的search()函数实现指定位置搜索功能
2017/11/10 Python
使用pygame模块编写贪吃蛇的实例讲解
2018/02/05 Python
python实现下载pop3邮件保存到本地
2018/06/19 Python
Django渲染Markdown文章目录的方法示例
2019/01/02 Python
python批量解压zip文件的方法
2019/08/20 Python
纯HTML5+CSS3制作图片旋转
2016/01/12 HTML / CSS
移动端开发HTML5页面点击按钮后出现闪烁或黑色背景的解决办法
2018/09/19 HTML / CSS
大门门卫岗位职责
2013/11/30 职场文书
教育系统干部作风整顿心得体会
2014/09/09 职场文书
党员民主评议个人总结
2014/10/20 职场文书
护理实习生带教计划
2015/01/16 职场文书
大学文艺委员竞选稿
2015/11/19 职场文书
PHP使用非对称加密算法RSA
2021/04/21 PHP
python关于集合的知识案例详解
2021/05/30 Python
gojs实现蚂蚁线动画效果
2022/02/18 Javascript