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 和 MySQL 开发的 8 个技巧
Oct 09 PHP
Smarty模板快速入门
Jan 04 PHP
php-perl哈希算法实现(times33哈希算法)
Dec 30 PHP
PHP中使用CURL模拟登录并获取数据实例
Jul 01 PHP
smarty中js的调用方法示例
Oct 27 PHP
PHP实现通过Luhn算法校验信用卡卡号是否有效
Mar 23 PHP
PHP 获取ip地址代码汇总
Jul 05 PHP
详解PHP执行定时任务的实现思路
Dec 21 PHP
php制作的简单验证码识别代码
Jan 26 PHP
微信支付开发订单查询实例
Jul 12 PHP
php实现替换手机号中间数字为*号及隐藏IP最后几位的方法
Nov 16 PHP
php使用GD2绘制几何图形示例
Feb 15 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转换颜色为其反色的方法
2015/04/27 PHP
Thinkphp模板标签if和eq的区别和比较实例分析
2015/07/01 PHP
PHP中子类重载父类的方法【parent::方法名】
2016/05/06 PHP
PHP错误提示It is not safe to rely on the system……的解决方法
2019/03/25 PHP
兼容FireFox 的 js 日历 支持时间的获取
2009/03/04 Javascript
js获取单选框或复选框值及操作
2012/12/18 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
2013/10/15 Javascript
从零学JSON之JSON数据结构
2014/05/19 Javascript
用js传递value默认值的示例代码
2014/09/11 Javascript
JavaScript中的类与实例实现方法
2015/01/23 Javascript
js当前页面登录注册框,固定div,底层阴影的实例代码
2016/10/04 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
2016/10/24 Javascript
详解Vue 2.0封装axios笔记
2017/06/22 Javascript
微信小程序如何获取用户手机号
2018/01/26 Javascript
JSON.stringify()方法讲解
2019/01/31 Javascript
js中addEventListener()与removeEventListener()用法案例分析
2020/03/02 Javascript
解决vue项目运行提示Warnings while compiling.警告的问题
2020/09/18 Javascript
用Python的pandas框架操作Excel文件中的数据教程
2015/03/31 Python
Python 基础教程之包和类的用法
2017/02/23 Python
Python实现PS图像明亮度调整效果示例
2018/01/23 Python
python制作朋友圈九宫格图片
2019/11/03 Python
python快速排序的实现及运行时间比较
2019/11/22 Python
PyTorch实现更新部分网络,其他不更新
2019/12/31 Python
Python图像处理库PIL中图像格式转换的实现
2020/02/26 Python
浅谈opencv自动光学检测、目标分割和检测(连通区域和findContours)
2020/06/04 Python
美国学校用品、教室和教学商店:Discount School Supply
2018/04/04 全球购物
Gina Bacconi官网:吉娜贝康尼连衣裙和礼服
2018/04/24 全球购物
美国运动鞋类和服装零售连锁店:Shoe Palace
2019/08/13 全球购物
自我鉴定200字
2013/10/28 职场文书
工厂仓管员岗位职责
2014/01/01 职场文书
情侣吵架检讨书
2014/02/05 职场文书
幼儿园五一活动方案
2014/02/07 职场文书
学校读书活动总结
2014/06/30 职场文书
颂军魂爱军营演讲稿
2014/09/13 职场文书
详解Python中__new__方法的作用
2022/03/31 Python