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 09 PHP
php中批量删除Mysql中相同前缀的数据表的代码
Jul 01 PHP
浅谈discuz密码加密的方式
May 22 PHP
php通过隐藏表单控件获取到前两个页面的url
Sep 09 PHP
Windows下的PHP安装pear教程
Oct 24 PHP
php+ajax实现的点击浏览量加1
Apr 16 PHP
PHP单例模式是什么 php实现单例模式的方法
May 14 PHP
Yii框架使用魔术方法实现跨文件调用功能示例
May 20 PHP
Ajax中的JSON格式与php传输过程全面解析
Nov 14 PHP
PHP join()函数用法与实例讲解
Mar 11 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
Apr 06 PHP
基于PHP实现用户登录注册功能的详细教程
Aug 04 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
php设计模式 Bridge (桥接模式)
2011/06/26 PHP
解析php dirname()与__FILE__常量的应用
2013/06/24 PHP
php检测网页是否被百度收录的函数代码
2013/10/09 PHP
PHP可变函数学习小结
2015/11/29 PHP
php源码之将图片转化为data/base64数据流实例详解
2016/11/27 PHP
php实现的redis缓存类定义与使用方法示例
2017/08/09 PHP
PHP的微信支付接口使用方法讲解
2019/03/08 PHP
Yii框架getter与setter方法功能与用法分析
2019/10/22 PHP
BOOM vs RR BO5 第一场 2.14
2021/03/10 DOTA
CSS JavaScript 实现菜单功能 改进版
2008/12/09 Javascript
JS 无限级 Select效果实现代码(json格式)
2011/08/30 Javascript
js插件方式打开pdf文件(浏览器pdf插件分享)
2013/12/20 Javascript
JS截取url中问号后面参数的值信息
2014/04/29 Javascript
html的DOM中Event对象onblur事件用法实例
2015/01/21 Javascript
js判断手机访问或者PC的几个例子(常用于手机跳转)
2015/12/15 Javascript
ExtJS 4.2 Grid组件单元格合并的方法
2016/10/12 Javascript
浅谈原型对象的常用开发模式
2017/07/22 Javascript
JavaScript中字符串的常用操作方法及特殊字符
2018/03/18 Javascript
vue中post请求以a=a&amp;b=b 的格式写遇到的问题
2018/04/27 Javascript
Angular4.x Event (DOM事件和自定义事件详解)
2018/10/09 Javascript
在vue-cli 3中给stylus、sass样式传入共享的全局变量
2019/08/12 Javascript
js实现简单的日历显示效果函数示例
2019/11/25 Javascript
JS可断点续传文件上传实现代码解析
2020/07/30 Javascript
python中使用urllib2获取http请求状态码的代码例子
2014/07/07 Python
Python解析xml中dom元素的方法
2015/03/12 Python
使用Python的判断语句模拟三目运算
2015/04/24 Python
python、java等哪一门编程语言适合人工智能?
2017/11/13 Python
Python中django学习心得
2017/12/06 Python
Python实现定时自动关闭的tkinter窗口方法
2019/02/16 Python
python 实现 hive中类似 lateral view explode的功能示例
2020/05/18 Python
详解tf.device()指定tensorflow运行的GPU或CPU设备实现
2021/02/20 Python
Solaris操作系统的线程机制
2012/12/23 面试题
宿舍打麻将检讨书
2014/01/24 职场文书
政法干警核心价值观心得体会
2014/09/11 职场文书
贫困生助学金感谢信
2015/01/21 职场文书
python基础之模块的导入
2021/10/24 Python