前言
大家应该都知道,我们在很多时候使用 Carbon 来处理日期和时间,对吗?但是又有多少人完整的阅读过文档了解它有那些方法呢?除了众所周知的 now() 和 format() 方法,Carbon 还有很多其他有用的方法。
下面我们一起来看看吧。
1. isX: True/False
有很多方法来判断 Carbon 对象是否是今天、周末、闰年等等,下面这些是官方文档列出来的:
1
2
3
4
5
6
7
8
9
10
|
<?php
$dt ->isWeekday();
$dt ->isWeekend();
$dt ->isYesterday();
$dt ->isToday();
$dt ->isTomorrow();
$dt ->isFuture();
$dt ->isPast();
$dt ->isLeapYear();
$dt ->isSameDay(Carbon::now());
|
2. isBirthday
除了上面的列表,Carbon 还有一个方法来判断日期是否是某个人的生日。除了单开校验月和日外,你还可以这么做:
1
2
3
4
5
|
$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 系列:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
$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(),然后替换掉时分秒,然后增加或者减去天数:
1
2
3
4
5
6
|
$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() 的方法 – 它会以一个便于人们阅读的方法返回两个日期之间的不同:
1
|
echo Carbon::now()->subDays(5)->diffForHumans(); // 5 days ago
|
但是你知道它也可以本地化吗?只需要改变地点即可,如汉语:
1
2
|
Carbon::setLocale( 'zh' );
echo Carbon::now()->addYear()->diffForHumans(); // 一年前
|
6. 改变 now() 为任意你想要的时间
1
2
3
|
$knownDate = Carbon::create(2001, 5, 21, 12); // 创建测试日期
Carbon::setTestNow( $knownDate ); // set the mock
echo Carbon::now(); // 2001-05-21 12:00:00
|
7. 星期常量
可以通过下面的常量来代替一周中的第几天:
1
2
3
4
5
6
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)
|
上面提到的这些有用的方法你都了解吗?可以在留言种列出你觉得有用的方法。
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作能带来一定的帮助,如果有疑问大家可以留言交流,谢谢大家对服务器之家的支持。
原文链接:https://9iphp.com/web/php/less-known-useful-carbon-functions.html