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 相关文章推荐
MVC模式的PHP实现
Oct 09 PHP
改进的IP计数器
Oct 09 PHP
php生成随机数或者字符串的代码
Sep 05 PHP
php 调用远程url的六种方法小结
Nov 02 PHP
php 读取shell管道传输过来的内容
Mar 01 PHP
php自动加载机制的深入分析
Jun 08 PHP
10 个经典PHP函数
Oct 17 PHP
用PHP来计算某个目录大小的方法
Apr 01 PHP
PHP Curl模拟登录微信公众平台、新浪微博实例代码
Jan 28 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
Mar 25 PHP
根据key删除数组中指定的元素实现方法
Mar 02 PHP
php+js实现的拖动滑块验证码验证表单操作示例【附源码下载】
May 27 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读取xml方法介绍
2013/01/12 PHP
ThinkPHP的RBAC(基于角色权限控制)深入解析
2013/06/17 PHP
Yii2实现同时搜索多个字段的方法
2016/08/10 PHP
通过源码解析Laravel的依赖注入
2018/01/22 PHP
php7新特性的理解和比较总结
2019/04/14 PHP
JS option location 页面跳转实现代码
2008/12/27 Javascript
js 处理URL实用技巧
2010/11/23 Javascript
js String对象中常用方法小结(字符串操作)
2012/01/27 Javascript
js 判断文件类型并控制表单提交示例代码
2013/11/14 Javascript
js动态移动滚动条至底部示例代码
2014/04/24 Javascript
bootstrap data与jquery .data
2014/07/07 Javascript
jQuery选择器源码解读(六):Sizzle选择器匹配逻辑分析
2015/03/31 Javascript
Hammer.js+轮播原理实现简洁的滑屏功能
2016/02/02 Javascript
canvas实现十二星座星空图
2017/02/14 Javascript
jquery表单提交带错误信息提示效果
2017/03/09 Javascript
vue之数据交互实例代码
2017/06/16 Javascript
使用JavaScript实现在页面中显示距离2017年中秋节的天数
2017/09/26 Javascript
angular4自定义组件详解
2017/09/28 Javascript
vue使用技巧及vue项目中遇到的问题
2018/06/04 Javascript
Vue-Router基础学习笔记(小结)
2018/10/15 Javascript
Vue指令v-for遍历输出JavaScript数组及json对象的常见方式小结
2019/02/11 Javascript
vue实现匀速轮播效果
2020/06/29 Javascript
Vue 实现一个简单的鼠标拖拽滚动效果插件
2020/12/10 Vue.js
Python脚本简单实现打开默认浏览器登录人人和打开QQ的方法
2016/04/12 Python
浅谈numpy生成数组的零值问题
2018/11/12 Python
pytorch多进程加速及代码优化方法
2019/08/19 Python
详解Python中Pyyaml模块的使用
2020/10/08 Python
Python基于内置函数type创建新类型
2020/10/22 Python
医院信息公开实施方案
2014/05/09 职场文书
信访稳定工作汇报
2014/10/27 职场文书
2015年五一劳动节活动总结
2015/02/09 职场文书
德能勤绩廉个人总结
2015/02/14 职场文书
导游词之南京汤山温泉
2019/11/26 职场文书
MySQL锁机制
2021/04/05 MySQL
HttpClient实现文件上传功能
2022/08/14 Java/Android