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下一个阿拉伯数字转中文数字的函数
Jul 16 PHP
php 使用post,get的一种简洁方式
Apr 25 PHP
PHP 时间日期操作实战
Aug 26 PHP
PHPMailer使用教程(PHPMailer发送邮件实例分析)
Dec 06 PHP
最常用的8款PHP调试工具
Jul 06 PHP
php实现文本数据导入SQL SERVER
May 17 PHP
浅谈COOKIE和SESSION区别
Jul 19 PHP
PHP实现二叉树的深度优先与广度优先遍历方法
Sep 28 PHP
yii添删改查实例
Nov 16 PHP
PHP中串行化用法示例
Nov 16 PHP
yii2.0整合阿里云oss上传单个文件的示例
Sep 19 PHP
PHP简单实现欧拉函数Euler功能示例
Nov 06 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操作mysql执行数据库查询的一些常用操作汇总
2013/06/24 PHP
php输出金字塔的2种实现方法
2014/12/16 PHP
php利用反射实现插件机制的方法
2015/03/14 PHP
WordPress分页伪静态加html后缀
2016/06/08 PHP
PHP实现统计所有字符在字符串中出现次数的方法
2017/10/17 PHP
jQuery.extend 函数的详细用法
2012/06/27 Javascript
javaScript 动态访问JSon元素示例代码
2013/08/30 Javascript
浏览器窗口大小变化时使用resize事件对框架不起作用的解决方法
2014/05/11 Javascript
JavaScript实现按Ctrl键打开新页面
2014/09/04 Javascript
javascript中的遍历for in 以及with的用法
2014/12/22 Javascript
jquery append 动态添加的元素事件on 不起作用的解决方案
2015/07/30 Javascript
JavaScript性能优化之小知识总结
2015/11/20 Javascript
jQuery Html控件基本操作(日常收集整理)
2016/03/11 Javascript
BootStrap智能表单实战系列(四)表单布局介绍
2016/06/13 Javascript
Node.js操作redis实现添加查询功能
2017/05/25 Javascript
vue实现移动端图片裁剪上传功能
2020/08/18 Javascript
解决Python字典写入文件出行首行有空格的问题
2017/09/27 Python
python中的decorator的作用详解
2018/07/26 Python
python游戏地图最短路径求解
2019/01/16 Python
python利用wx实现界面按钮和按钮监听和字体改变的方法
2019/07/17 Python
Python同时处理多个异常的方法
2020/07/28 Python
Python高阶函数与装饰器函数的深入讲解
2020/11/10 Python
python实现计算图形面积
2021/02/22 Python
HTML5学习笔记之History API
2015/02/26 HTML / CSS
伦敦眼门票在线预订:London Eye
2018/05/31 全球购物
五型班组建设方案
2014/02/10 职场文书
促销活动方案模板
2014/02/24 职场文书
学校节能减排方案
2014/06/13 职场文书
员工团队活动方案
2014/08/28 职场文书
工伤事故赔偿协议书(标准)
2014/09/29 职场文书
企业开业庆典答谢词
2015/01/20 职场文书
春节晚会开场白
2015/05/29 职场文书
Redis性能监控的实现
2021/07/09 Redis
oracle删除超过N天数据脚本的方法
2022/02/28 Oracle
js作用域及作用域链工作引擎
2022/07/07 Javascript
浅谈css清除浮动(clearfix和clear)的用法
2023/05/21 HTML / CSS