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 相关文章推荐
如何开发一个虚拟域名系统
Oct 09 PHP
php array_merge下进行数组合并的代码
Jul 22 PHP
php下连接ftp实现文件的上传、下载、删除文件实例代码
Jun 03 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
Jun 03 PHP
19个超实用的PHP代码片段
Mar 14 PHP
php获取数组元素中头一个数组元素值的实现方法
Dec 20 PHP
php实现redis数据库指定库号迁移的方法
Jan 14 PHP
php pdo oracle中文乱码的快速解决方法
May 16 PHP
使用vs code编辑调试php配置的方法
Jan 29 PHP
PHP Primary script unknown 解决方法总结
Aug 22 PHP
php更新cookie内容的详细方法
Sep 30 PHP
php设计模式之策略模式实例分析【星际争霸游戏案例】
Mar 26 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
星际争霸 Starcraft 游戏介绍
2020/03/14 星际争霸
一个比较简单的PHP 分页分组类
2009/12/10 PHP
phpmyadmin config.inc.php配置示例
2013/08/27 PHP
Netbeans 8.2将支持PHP7 更精彩
2016/06/13 PHP
关于ThinkPhp 框架表单验证及ajax验证问题
2017/07/19 PHP
一段好玩的JavaScript代码
2006/12/01 Javascript
img的onload的另类用法
2008/01/10 Javascript
jQuery对象和DOM对象的相互转化实现代码
2010/03/02 Javascript
jQuery的each终止或跳过示例代码
2013/12/12 Javascript
解决js中window.open弹出的是上次的缓存页面问题
2013/12/29 Javascript
常用的Javascript设计模式小结
2015/12/09 Javascript
node.js实现爬虫教程
2020/08/25 Javascript
基于JavaScript实现Tab选项卡切换效果
2016/11/24 Javascript
jQuery实现背景滑动菜单
2016/12/02 Javascript
Move.js入门
2017/02/08 Javascript
微信小程序实现倒计时补零功能
2018/07/09 Javascript
layui 监听表格复选框选中值的方法
2018/08/15 Javascript
微信小程序使用Vant Weapp组件库的方法步骤
2019/08/01 Javascript
深入解析Python中的lambda表达式的用法
2015/08/28 Python
使用Python读写文本文件及编写简单的文本编辑器
2016/03/11 Python
Python 类的私有属性和私有方法实例分析
2019/09/29 Python
python实现根据文件格式分类
2019/10/31 Python
python网络编程socket实现服务端、客户端操作详解
2020/03/24 Python
Python+PyQt5实现灭霸响指功能
2020/05/25 Python
CSS3 box-shadow属性实例详解
2020/06/19 HTML / CSS
KIEHL’S科颜氏官方旗舰店:源自美国的顶级护肤品牌
2018/06/07 全球购物
Weblogic和WebSphere不同特点
2012/05/09 面试题
环保建议书100字
2014/05/14 职场文书
六年级学生期末评语
2014/12/26 职场文书
父亲节活动总结
2015/02/12 职场文书
研究生个人学年总结
2015/02/14 职场文书
机关干部纪律作风整顿心得体会
2016/01/23 职场文书
RPM包方式安装Oracle21c的方法详解
2021/08/23 Oracle
Spring Boot 底层原理基础深度解析
2022/04/03 Java/Android
Redis 报错 error:NOAUTH Authentication required
2022/05/15 Redis
Docker容器harbor私有仓库部署和管理
2022/08/05 Servers