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发送邮件类代码附详细说明
Jul 10 PHP
php 移除数组重复元素的一点说明
Nov 27 PHP
sourcesafe管理phpproj文件的补充说明(downmoon)
Apr 11 PHP
phpMyadmin 用户权限中英对照
Apr 02 PHP
Yii配置文件用法详解
Dec 04 PHP
php生成静态html页面的方法(2种方法)
Sep 14 PHP
Yii调试查看执行SQL语句的方法
Jul 15 PHP
yii2缓存Caching基本用法示例
Jul 18 PHP
php批量转换文件夹下所有文件编码的函数类
Aug 06 PHP
php实现推荐功能的简单实例
Sep 29 PHP
Laravel 连接(Join)示例
Oct 16 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实现的下载css文件中的图片的代码
2010/02/08 PHP
php addslashes 利用递归实现使用反斜线引用字符串
2013/08/05 PHP
php设计模式之单例模式代码
2016/06/11 PHP
Yii2.0预定义的别名功能小结
2016/07/04 PHP
thinkphp ajaxfileupload实现异步上传图片的示例
2017/08/28 PHP
PHP多进程通信-消息队列使用
2019/03/08 PHP
jquery 弹出登录窗口实现代码
2009/12/24 Javascript
JQuery中getJSON的使用方法
2010/12/13 Javascript
精通Javascript系列之数据类型 字符串
2011/06/08 Javascript
用Javascript评估用户输入密码的强度实现代码
2011/11/30 Javascript
给事件响应函数传参数的四种方式小结
2013/12/05 Javascript
更快的异步执行(setTimeout多浏览器)
2014/08/12 Javascript
JQuery.get提交页面不跳转的解决方法
2015/01/13 Javascript
jQuery实现用户信息表格的添加和删除功能
2017/09/12 jQuery
使用watch在微信小程序中实现全局状态共享
2019/06/03 Javascript
细述Javascript的加法运算符的具体使用
2019/10/18 Javascript
在node环境下parse Smarty模板的使用示例代码
2019/11/15 Javascript
一行JavaScript代码如何实现瀑布流布局
2020/12/11 Javascript
对比Python中__getattr__和 __getattribute__获取属性的用法
2016/06/21 Python
利用Python3分析sitemap.xml并抓取导出全站链接详解
2017/07/04 Python
Pandas 合并多个Dataframe(merge,concat)的方法
2018/06/08 Python
Python Excel处理库openpyxl使用详解
2019/05/09 Python
python爬取盘搜的有效链接实现代码
2019/07/20 Python
用Python抢火车票的简单小程序实现解析
2019/08/14 Python
python 单线程和异步协程工作方式解析
2019/09/28 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
2020/02/12 Python
pandas分批读取大数据集教程
2020/06/06 Python
详解html5 postMessage解决跨域通信的问题
2018/08/17 HTML / CSS
美国百货齐全的精品网站,提供美式风格的产品:Overstock.com
2016/07/22 全球购物
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
纽约州一群才华横溢的金匠制作而成:Hearth Jewelry
2019/03/22 全球购物
输入N,打印N*N矩阵
2012/02/20 面试题
计算机专业毕业生求职信分享
2013/12/24 职场文书
讲座开场白台词和结束语
2015/05/29 职场文书
Python如何使用logging为Flask增加logid
2021/03/30 Python
Mysql 设置boolean类型的操作
2021/06/04 MySQL