Carbon类是从PHP DateTime类继承而来的。$now = Carbon::now();//现在$today = Carbon::today();//今天$yesterday = Carbon::yesterday(); //昨天第一步,设置本地化
设置时区我们可以放在
app/Providers/AppServiceProvider.php
的 boot() 方法中添加下面的代码来设置全局本地化:public function boot() { // 设置本地化 \Carbon\Carbon::setLocale('zh'); }
如果不习惯用
\
来调用,可以用use Carbon\Carbon;
调用
{{ $article->created_at->diffForHumans() }} // 10分钟前
按照类似的格式调用即可。OK,搞定!
Carbon
是一个非常全的时间处理扩展包,可以获取当前时间、明天、昨天、几个星期后的时间、以及解析时间格式字符串中的年月日等等。
use Carbon\Carbon;//引入Carbon类Carbon::createFromDate($year, $month, $day, $tz); Carbon::createFromTime($hour, $minute, $second, $tz); Carbon::create($year, $month, $day, $hour, $minute, $second, $tz);
createFromDate()
将默认时间到现在。createFromTime()
将默认日期到今天。create()
将默认任何空参数到当前相应的值。和以前一样,$tz
默认为当前时区,否则可以是一个DateTimeZone实例或简单的字符串时区值。默认值(模仿底层PHP库)唯一的特殊情况是在指定小时值但没有分钟或秒时发生,默认值为0。字符串格式
所有可用的
toXXXString()
方法都依赖于基类方法DateTime :: format()。你会注意到这个__toString()
方法被定义了,它允许一个Carbon实例在字符串上下文中被打印为一个漂亮的日期时间字符串。$dt = Carbon::create(1975, 12, 25, 14, 15, 16); var_dump($dt->toDateTimeString() == $dt); // bool(true) => uses __toString() echo $dt->toDateString(); // 1975-12-25 echo $dt->toFormattedDateString(); // Dec 25, 1975 echo $dt->toTimeString(); // 14:15:16 echo $dt->toDateTimeString(); // 1975-12-25 14:15:16 echo $dt->toDayDateTimeString(); // Thu, Dec 25, 1975 2:15 PM // ... of course format() is still available echo $dt->format('l jS \\of F Y h:i:s A'); // Thursday 25th of December 1975 02:15:16 PM
常用格式
以下是DateTime类中提供的常用格式的封装器。
$dt = Carbon::now(); // $dt->toAtomString() is the same as $dt->format(DateTime::ATOM); echo $dt->toAtomString(); // 1975-12-25T14:15:16-05:00 echo $dt->toCookieString(); // Thursday, 25-Dec-1975 14:15:16 EST echo $dt->toIso8601String(); // 1975-12-25T14:15:16-0500 echo $dt->toRfc822String(); // Thu, 25 Dec 75 14:15:16 -0500 echo $dt->toRfc850String(); // Thursday, 25-Dec-75 14:15:16 EST echo $dt->toRfc1036String(); // Thu, 25 Dec 75 14:15:16 -0500 echo $dt->toRfc1123String(); // Thu, 25 Dec 1975 14:15:16 -0500 echo $dt->toRfc2822String(); // Thu, 25 Dec 1975 14:15:16 -0500 echo $dt->toRfc3339String(); // 1975-12-25T14:15:16-05:00 echo $dt->toRssString(); // Thu, 25 Dec 1975 14:15:16 -0500 echo $dt->toW3cString(); // 1975-12-25T14:15:16-05:00
为了处理最常用的情况,有一些简单的帮助函数希望从他们的名字中显而易见。对于
now()
以某种方式与(比如isToday())进行比较的方法,将now()
在与实例相同的时区中创建。$dt = Carbon::now();//张高伟的当前时间
$dt = Carbon::create(2018, 1, 7, 11, 16, 16);//创建一个时间 //张高伟测试 //1 year ago //2 minutes ago //24 seconds ago //1 hour ago //1 day ago //1 week ago //6 days ago echo $dt->diffForHumans();//人性化格式 die;
$dt->isWeekday();$dt->isWeekend();$dt->isYesterday();$dt->isToday();$dt->isTomorrow();$dt->isFuture();$dt->isPast();$dt->isLeapYear(); //是否闰年$dt->isSameDay(Carbon::now());//是否同一天$born = Carbon::createFromDate(1987, 4, 23);$noCake = Carbon::createFromDate(2014, 9, 26);$yesCake = Carbon::createFromDate(2014, 4, 23);$overTheHill = Carbon::now()->subYears(50);var_dump($born->isBirthday($noCake)); // bool(false)var_dump($born->isBirthday($yesCake)); // bool(true)var_dump($overTheHill->isBirthday()); // bool(true) -> default compare it to today!