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实现的简单压缩英文字符串的代码
Apr 24 PHP
php面向对象 字段的声明与使用
Jun 14 PHP
PHP fopen 读取带中文URL地址的一点见解
Sep 25 PHP
php 强制下载文件实现代码
Oct 28 PHP
PHP网站开发中常用的8个小技巧
Feb 13 PHP
php三元运算符知识汇总
Jul 02 PHP
Yii中CGridView禁止列排序的设置方法
Jul 12 PHP
php7安装yar扩展的方法详解
Aug 03 PHP
PHP长连接实现与使用方法详解
Feb 11 PHP
thinkphp5.1 文件引入路径问题及注意事项
Jun 13 PHP
PHP goto语句用法实例
Aug 06 PHP
PHP实现文件上传操作和封装
Mar 04 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
PHP使用Nginx实现反向代理
Sep 20 #PHP
You might like
本地机apache配置基于域名的虚拟主机详解
2013/08/10 PHP
详解PHP的Yii框架中扩展的安装与使用
2016/04/01 PHP
thinkPHP实现将excel导入到数据库中的方法
2016/04/22 PHP
PHP进阶学习之反射基本概念与用法分析
2019/06/18 PHP
解决Laravel blade模板转义html标签的问题
2019/09/03 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
laravel框架中间件简单使用方法示例
2020/01/25 PHP
javascript 静态对象和构造函数的使用和公私问题
2010/03/02 Javascript
Javascript和Java获取各种form表单信息的简单实例
2014/02/14 Javascript
JavaScript Length 属性的总结
2015/11/02 Javascript
js获取所有checkbox的值的简单实例
2016/05/30 Javascript
jQuery插件扩展测试实例
2016/06/21 Javascript
AngularJS基础 ng-model 指令详解及示例代码
2016/08/02 Javascript
JS给swf传参数的实现方法
2016/09/13 Javascript
JavaScript正则替换HTML标签功能示例
2017/03/02 Javascript
JavaScript检查数据中是否存在相同的元素(两种方法)
2018/10/07 Javascript
微信小程序实现渐入渐出动画效果
2019/06/13 Javascript
layer.js之回调销毁对话框的例子
2019/09/11 Javascript
微信头像地址失效踩坑记附带解决方案
2019/09/23 Javascript
python练习程序批量修改文件名
2014/01/16 Python
python结合shell查询google关键词排名的实现代码
2016/02/27 Python
如何用itertools解决无序排列组合的问题
2017/05/18 Python
Python中join函数简单代码示例
2018/01/09 Python
详解TensorFlow在windows上安装与简单示例
2018/03/05 Python
Django+uni-app实现数据通信中的请求跨域的示例代码
2019/10/12 Python
flask 使用 flask_apscheduler 做定时循环任务的实现
2019/12/10 Python
HTML5实现视频直播功能思路详解
2017/11/16 HTML / CSS
HTML5页面嵌入小程序没有返回按钮及返回页面空白的问题
2020/05/28 HTML / CSS
Sandro法国官网:法国成衣品牌
2019/08/28 全球购物
开展创先争优活动总结
2014/08/28 职场文书
2014年财务个人工作总结
2014/12/08 职场文书
总经理助理岗位职责
2015/01/31 职场文书
认识实习感想
2015/08/10 职场文书
2016年小学优秀班主任事迹材料
2016/02/29 职场文书
2016年度创先争优活动总结
2016/04/05 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers