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树的代码,可以嵌套任意层
Oct 09 PHP
PHP实现多条件查询实例代码
Jul 17 PHP
基于PHP服务端图片生成缩略图的方法详解
Jun 20 PHP
PHP命令行脚本接收传入参数的三种方式
Aug 20 PHP
php实现四舍五入的方法小结
Mar 03 PHP
PHP实现文件上传和多文件上传
Dec 24 PHP
php blowfish加密解密算法
Jul 02 PHP
PHP 实现页面静态化的几种方法
Jul 23 PHP
PHP中in_array的隐式转换的解决方法
Mar 06 PHP
Laravel框架实现利用中间件进行操作日志记录功能
Jun 06 PHP
PHP filesize函数用法浅析
Feb 15 PHP
PHP正则表达式处理函数(PCRE 函数)实例小结
May 09 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中strlen和mb_strlen的区别
2014/08/31 PHP
PHP5.3连接Oracle客户端及PDO_OCI模块的安装方法
2016/05/13 PHP
简单实现php上传文件功能
2017/09/21 PHP
只需20行代码就可以写出CSS覆盖率测试脚本
2013/04/24 Javascript
简单的JavaScript互斥锁分享
2014/02/02 Javascript
Javascript简单实现面向对象编程继承实例代码
2015/11/27 Javascript
javascript实现的网站访问量统计代码
2015/12/20 Javascript
从对象列表中获取一个对象的方法,依据关键字和值
2017/09/20 Javascript
浅谈webpack对样式的处理
2018/01/05 Javascript
react build 后打包发布总结
2018/08/24 Javascript
实现elementUI表单的全局验证的方法步骤
2019/04/29 Javascript
[10:04]国际邀请赛采访专栏:DK.Farseer,mouz.Black^,采访员Josh专访
2013/08/05 DOTA
浅析Python中的join()方法的使用
2015/05/19 Python
讲解Python的Scrapy爬虫框架使用代理进行采集的方法
2016/02/18 Python
解析Mac OS下部署Pyhton的Django框架项目的过程
2016/05/03 Python
python opencv旋转图像(保持图像不被裁减)
2018/07/26 Python
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
使用PyQtGraph绘制精美的股票行情K线图的示例代码
2019/03/14 Python
为什么说python适合写爬虫
2020/06/11 Python
HTML5 canvas标签实现刮刮卡效果
2015/04/24 HTML / CSS
翻译专业应届生求职信
2013/11/23 职场文书
美德少年事迹材料
2014/01/23 职场文书
宝宝周岁宴答谢词
2014/01/26 职场文书
四年级下册教学反思
2014/02/01 职场文书
战友聚会策划方案
2014/06/13 职场文书
2014优秀党员事迹材料
2014/08/14 职场文书
2014领导班子正风肃纪思想汇报
2014/09/18 职场文书
卫校毕业生自我鉴定
2014/09/28 职场文书
2014年质检工作总结
2014/11/26 职场文书
新婚姻法离婚协议书范文
2014/11/30 职场文书
2015年国庆节活动总结
2015/03/23 职场文书
2016党员发展对象培训心得体会
2016/01/08 职场文书
《夸父追日》教学反思
2016/02/20 职场文书
Spring Bean的实例化之属性注入源码剖析过程
2021/06/13 Java/Android
【海涛DOTA】D-cup邀请赛NV.cn vs DT.Love
2022/04/01 DOTA
win10忘记pin密码登录不了怎么办?win10忘记pin密码登不进去的解决方法
2022/07/07 数码科技