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完全过滤HTML,JS,CSS等标签
Jan 16 PHP
php 冒泡排序 交换排序法
May 10 PHP
PHP面向对象学习笔记之二 生成对象的设计模式
Oct 06 PHP
PHP中soap的用法实例
Oct 24 PHP
PHP中使用GD库创建圆形饼图的例子
Nov 19 PHP
PHP将字符分解为多个字符串的方法
Nov 22 PHP
分享常见的几种页面静态化的方法
Jan 08 PHP
在Nginx上部署ThinkPHP项目教程
Feb 02 PHP
PHP加密解密类实例代码
Jul 20 PHP
php.ini中date.timezone设置详解
Nov 20 PHP
PHP微信企业号开发之回调模式开启与用法示例
Nov 25 PHP
Ubuntu中支持PHP5与PHP7双版本的简单实现
Aug 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
一段php加密解密的代码
2006/10/09 PHP
PHP用GD库生成高质量的缩略图片
2011/03/09 PHP
用JAVASCRIPT如何给&amp;lt;textarea&amp;gt;&amp;lt;/textarea&amp;gt;赋值
2007/04/20 Javascript
JavaScript中的Math 使用介绍
2014/04/21 Javascript
jfinal与bootstrap的登录跳转实战演习
2015/09/22 Javascript
详解Angularjs filter过滤器
2016/02/06 Javascript
confirm确认对话框的实现方法总结
2016/06/17 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
2016/10/24 Javascript
Bootstrap 表单验证formValidation 实现表单动态验证功能
2017/05/17 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
js实现简易聊天对话框
2017/08/17 Javascript
基于angular6.0实现的一个组件懒加载功能示例
2018/04/12 Javascript
JS 实现获取验证码 倒计时功能
2018/10/29 Javascript
Vue 中的受控与非受控组件的实现
2018/12/17 Javascript
React中Ref 的使用方法详解
2020/04/28 Javascript
[01:17:47]TNC vs VGJ.S 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
MySQL中表的复制以及大型数据表的备份教程
2015/11/25 Python
Python简单生成随机姓名的方法示例
2017/12/27 Python
python实现随机调用一个浏览器打开网页
2018/04/21 Python
使用Python爬取弹出窗口信息的实例
2020/03/14 Python
CSS3对图片照片进行边缘模糊处理的实现
2018/08/08 HTML / CSS
HTML5中使用postMessage实现两个网页间传递数据
2016/06/22 HTML / CSS
美国著名珠宝品牌之一:Jared The Galleria Of Jewelry
2016/10/01 全球购物
BRASTY捷克:购买香水、化妆品、手袋和手表
2017/07/12 全球购物
介绍一下SQL中union,intersect和minus
2012/04/05 面试题
酒店总经理欢迎词
2014/01/15 职场文书
应届毕业生如何写求职信
2014/02/16 职场文书
2014年单位植树节活动方案
2014/03/23 职场文书
光学与应用专业毕业生求职信
2014/09/01 职场文书
校园文化艺术节宣传标语
2014/10/09 职场文书
工作失误检讨书(3篇)
2014/10/11 职场文书
2015年小学数学教研组工作总结
2015/05/21 职场文书
大学军训心得体会800字
2016/01/11 职场文书
Python中zipfile压缩包模块的使用
2021/05/14 Python
《战锤40K:暗潮》跳票至9月 公布新宣传片
2022/04/03 其他游戏
java实现自定义时钟并实现走时功能
2022/06/21 Java/Android