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 相关文章推荐
web方式ftp
Oct 09 PHP
程序员编程十条戒律
Jul 09 PHP
php 数组排序 array_multisort与uasort的区别
Mar 24 PHP
PHP中使用gettext来支持多语言的方法
May 02 PHP
全新Mac配置PHP开发环境教程
Feb 03 PHP
PHP预定义变量9大超全局数组用法详解
Apr 23 PHP
php时间计算相关问题小结
May 09 PHP
Smarty模板简单配置与使用方法示例
May 23 PHP
Laravel 5.2 文档 数据库 ―― 起步介绍
Oct 21 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
Mar 27 PHP
Laravel中GraphQL接口请求频率实战记录
Sep 01 PHP
PHP中isset、empty的用法与区别示例详解
Nov 05 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
Mysql的GROUP_CONCAT()函数使用方法
2008/03/28 PHP
PHP图形计数器程序显示网站用户浏览量
2016/07/20 PHP
laravel 实现用户登录注销并限制功能
2019/10/24 PHP
ExtJs Excel导出并下载IIS服务器端遇到的问题
2011/09/16 Javascript
JavaScript中instanceof与typeof运算符的用法及区别详细解析
2013/11/19 Javascript
javascript事件委托的方式绑定详解
2015/06/10 Javascript
js window对象属性和方法相关资料整理
2015/11/11 Javascript
jquery实现表格隔行换色效果
2015/11/19 Javascript
JavaScript编程中实现对象封装特性的实例讲解
2016/06/24 Javascript
浅谈Vue SSR 的 Cookies 问题
2017/11/20 Javascript
JavaScript创建对象方式总结【工厂模式、构造函数模式、原型模式等】
2018/12/19 Javascript
微信小程序搜索功能(附:小程序前端+PHP后端)
2019/02/28 Javascript
egg.js的基本使用和调用数据库的方法示例
2019/05/18 Javascript
分享一个vue项目“脚手架”项目的实现步骤
2019/05/26 Javascript
[47:39]2018DOTA2亚洲邀请赛 3.31 小组赛 A组 LGD vs OPTIC
2018/03/31 DOTA
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
2009/04/09 Python
理解Python中的绝对路径和相对路径
2017/08/30 Python
Python基于生成器迭代实现的八皇后问题示例
2018/05/23 Python
python 利用文件锁单例执行脚本的方法
2019/02/19 Python
python列表插入append(), extend(), insert()用法详解
2019/09/14 Python
python圣诞树编写实例详解
2020/02/13 Python
如何利用python 读取配置文件
2021/01/06 Python
Python爬取酷狗MP3音频的步骤
2021/02/26 Python
日本网路线上商品代购服务:转送JAPAN
2016/08/05 全球购物
大学毕业生的自我鉴定
2013/11/30 职场文书
最新创业融资计划书
2014/01/19 职场文书
小学美术教学反思
2014/02/01 职场文书
汉语言文学职业规划
2014/02/14 职场文书
货物运输服务质量承诺书
2014/05/29 职场文书
会计学毕业生求职信
2014/06/25 职场文书
幼儿园六一儿童节活动方案
2014/08/26 职场文书
“四风”问题对照检查材料思想汇报
2014/09/16 职场文书
公安局班子个人对照检查材料思想汇报
2014/10/09 职场文书
实训报告范文大全
2014/11/04 职场文书
干部外出学习心得体会
2016/01/18 职场文书
2019新学期家长会工作计划
2019/08/21 职场文书