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 相关文章推荐
使用sockets:从新闻组中获取文章(一)
Oct 09 PHP
PHP 表单提交给自己
Jul 24 PHP
PHP 高级课程笔记 面向对象
Jun 21 PHP
PHP+MySQL投票系统的设计和实现分享
Sep 23 PHP
php获取文件夹路径内的图片以及分页显示示例
Mar 11 PHP
php截取中文字符串函数实例
Feb 23 PHP
php导出中文内容excel文件类实例
Jul 06 PHP
PHP经典面试题之设计模式(经常遇到)
Oct 15 PHP
PHP Header失效的原因分析及解决方法
Nov 16 PHP
Zend Framework上传文件重命名的实现方法
Nov 25 PHP
PHP连接MYSQL数据库的3种常用方法
Feb 27 PHP
PHP goto语句用法实例
Aug 06 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 学习提高路线分享
2011/10/23 PHP
二招解决php乱码问题
2012/03/25 PHP
ThinkPHP分页类使用详解
2014/03/05 PHP
php搜索文件程序分享
2015/10/30 PHP
PHP实现限制IP访问的方法
2017/04/20 PHP
PHP聚合式迭代器接口IteratorAggregate用法分析
2017/12/28 PHP
PHP7下协程的实现方法详解
2017/12/17 PHP
ext form 表单提交数据的方法小结
2008/08/08 Javascript
Javascript面向对象设计一 工厂模式
2011/12/20 Javascript
js确定对象类型方法
2012/03/30 Javascript
js中的如何定位固定层的位置
2014/06/15 Javascript
JavaScript设计模式之工厂方法模式介绍
2014/12/28 Javascript
jquery实现炫酷的叠加层自动切换特效
2015/02/01 Javascript
js动态创建及移除div的方法
2015/06/03 Javascript
vue如何截取字符串
2019/05/06 Javascript
js构造函数constructor和原型prototype原理与用法实例分析
2020/03/02 Javascript
vue-drawer-layout实现手势滑出菜单栏
2020/11/19 Vue.js
Vue 实例中使用$refs的注意事项
2021/01/29 Vue.js
Python中Random和Math模块学习笔记
2015/05/18 Python
python 实现tar文件压缩解压的实例详解
2017/08/20 Python
Pycharm设置去除显示的波浪线方法
2018/10/28 Python
Python利用逻辑回归分类实现模板
2020/02/15 Python
Keras 中Leaky ReLU等高级激活函数的用法
2020/07/05 Python
HTML5录音实践总结(Preact)
2020/05/07 HTML / CSS
GUESS Factory加拿大:牛仔裤、服装及配饰
2019/09/20 全球购物
学年自我鉴定
2014/01/16 职场文书
白酒市场营销方案
2014/02/25 职场文书
行政人事经理职位说明书
2014/03/05 职场文书
GMP办公室主任岗位职责
2014/03/14 职场文书
2014年五四青年节活动策划书
2014/04/22 职场文书
学雷锋树新风演讲稿
2014/05/10 职场文书
安全资料员岗位职责范本
2014/06/28 职场文书
公司股份转让协议书范本
2015/01/28 职场文书
我的1919观后感
2015/06/03 职场文书
详解Python如何批量采集京东商品数据流程
2022/01/22 Python
使用Ajax实现进度条的绘制
2022/04/07 Javascript